问题描述
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"
如果有更优雅的方式,我不会感到惊讶,但这是可行的。