将 + 号放在 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实例前面?

如何使用 PyQt 中的样式表将小部件放在前面?

将数组8,23,4,16,77,-5,53,100中的元素按从大到小的顺序排列,最少需要交换几次?我知道答案是5次

将 Silverlight 与 Ruby on Rails 一起使用?

将 Fragment 放在前面(无 Fragment Recreation)

Excel 中的 IFS 公式:公式将分类正数但不分类负数