是否可以在Ruby中定义自己的文字?

时间:2018-11-18 12:12:48

标签: ruby literals

对于Ruby中的任意精度浮点十进制算术,我们可以使用库BigDecimal。不幸的是,与浮点数相比,每个显式给定的BigDecimal都需要大量键入:

bd = BigDecimal("42.0")
# vs.
fl = 42.0

是否可以在Ruby中定义自己的文字?

例如,上面的BigDecimal可以表示为:

bd = 42°0

或至少:

bd = %b(42.0)

2 个答案:

答案 0 :(得分:1)

否,Ruby不允许用户定义文字,文字重载或任何其他类似的东西。

Ruby 确实允许为现有运算符定义运算符方法,但不能定义新运算符,因此即使处理

42°0

作为二进制运算符°无效。

您可以获得的最接近的方法是在°上用猴子修补Integer方法:

class Integer
  def °(decimal_part)
    BigDecimal("#{self}.#{decimal_part}")
  end
end

答案 1 :(得分:0)

您可能会:

def b(number)
  BigDecimal(number)
end

然后b(42.0)就可以了,非常接近%b(42.0)