为什么 Ruby 不提供 `Complexe#modulo` 方法?
Why Ruby doesn’t provide a `Complexe#modulo` method?
Ruby 定义 Numeric#%
,又名 Numeric#modulo
以提供接收者除以其他数字的剩余部分。但是,正如下面的代码所示,Complex
是唯一没有为其提供方法的派生类型:
ObjectSpace.each_object(Class){p "#{_1}: #{_1.method_defined?(:%)}" if _1.ancestors.include?(Numeric) unless _1 == Numeric}
"Complex: false"
"Rational: true"
"Float: true"
"Integer: true"
"Date::Infinity: true"
是否有数学原因可以避免提供复数提示?在所有情况下,此工程设计选择是否有书面理由?
为 Complex 提供此运算符的实现,强调可能避免的陷阱(如果有的话),这也是受欢迎的,但对于这个问题的主题来说更边缘化。
旁注:这与复杂 modulus 的概念无关,也就是规范,Ruby 标准库中也不存在。
Ruby 定义 Numeric#%
,又名 Numeric#modulo
以提供接收者除以其他数字的剩余部分。但是,正如下面的代码所示,Complex
是唯一没有为其提供方法的派生类型:
ObjectSpace.each_object(Class){p "#{_1}: #{_1.method_defined?(:%)}" if _1.ancestors.include?(Numeric) unless _1 == Numeric}
"Complex: false"
"Rational: true"
"Float: true"
"Integer: true"
"Date::Infinity: true"
是否有数学原因可以避免提供复数提示?在所有情况下,此工程设计选择是否有书面理由?
为 Complex 提供此运算符的实现,强调可能避免的陷阱(如果有的话),这也是受欢迎的,但对于这个问题的主题来说更边缘化。
旁注:这与复杂 modulus 的概念无关,也就是规范,Ruby 标准库中也不存在。