是否可以在 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)
对于 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)