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

Is it possible to define own literals in Ruby?

对于 Ruby 中的任意精度浮点小数运算,我们可以使用库 BigDecimal。不幸的是,与浮点数相比,每个明确给出的 BigDecimal 都需要大量输入:

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

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

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

bd = 42°0

或至少:

bd = %b(42.0)

不,Ruby 不允许用户定义文字、文字重载或任何其他类似的事情。

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

42°0

作为二元运算符 ° 将不起作用。

最接近的是在 Integer:

上猴子修补一个 ° 方法
class Integer
  def °(decimal_part)
    BigDecimal("#{self}.#{decimal_part}")
  end
end

你可以:

def b(number)
  BigDecimal(number)
end

那么 b(42.0) 就可以了,非常接近 %b(42.0)