将 + 号放在 ruby 中的正数前面
Posted
技术标签:
【中文标题】将 + 号放在 ruby 中的正数前面【英文标题】:Put + sign in front of positive numbers in ruby 【发布时间】:2020-08-23 22:43:05 【问题描述】:我喜欢在正数之前显示一个加号。示例
2.to_s
# returns +2
和
-2.to_s
# returns -2
【问题讨论】:
你想在任何正数被字符串化时自动执行此操作吗? 您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example。请注意Stack Overflow不是写代码服务,你需要努力! 你想要+0
还是0
? (鉴于零不是正数)
【参考方案1】:
将Kernel#sprintf
与+
标志一起使用:
sprintf('%d', 11)
# 11
sprintf('%+d', 11)
# +11
或等效地,String#%
:
'%+d<x>' % x: 23
# +23
【讨论】:
【参考方案2】:您可以对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"
如果有更优雅的方法,我不会感到惊讶,但这是可行的。
【讨论】:
使用refinement,而不是猴子补丁。这是一个作用域猴子补丁。以上是关于将 + 号放在 ruby 中的正数前面的主要内容,如果未能解决你的问题,请参考以下文章
使用c头文件时,是不是需要将“struct”放在c++中的struct实例前面?
将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次
将 Silverlight 与 Ruby on Rails 一起使用?