在红宝石的正数前加上+号

问题描述

我喜欢在正数之前显示一个加号。例子

2.to_s
# returns +2

-2.to_s
# returns -2

解决方法

Kernel#sprintf+标志一起使用:

sprintf('%d',11)
# 11
sprintf('%+d',11)
# +11

或等效的String#%

'%+d<x>' % { x: 23 }
# +23
,

您可以在Numeric上使用相当简单的猴子补丁:

class Numeric
  def to_ss   # to signed string
    self.negative? ? self.to_s : "+#{self.to_s}"
  end
end

2.to_ss   # => "+2"
-2.to_ss  # => "-2"
5.7.to_ss # => "+5.7"

如果有更优雅的方式,我不会感到惊讶,但这是可行的。