在使用 C# 工作时,我发现创建扩展方法非常方便。在 Ruby 中,一个可能看起来像:
class Fixnum
is_divisible? divisor
self % divisor == 0
end
end
但我没有看到人们以这种方式扩展内置类型。
非扩展方式是:
def is_divisible? dividend, divisor
dividend % divisor == 0
end
在我看来,第二种方式更难阅读 (is_divisible?(i, 5)
) 与 i.is_divisible? 5
。或者甚至,i.is_divisible_by? 5
。
是否有更 Eloquent Ruby 式方法来做这类事情?或者第一种方法是首选方法?
最佳答案
虽然这是一个有点微不足道的例子,但猴子补丁通常没问题。最好将方法放在类的命名空间中,而不是四处漂浮。
请记住,如果您正在编写 gem 或您打算让其他人使用的东西,您的猴子补丁有可能会干扰他们的猴子补丁。
对于像这样的简单情况,为了安全起见最好避免使用它。
关于ruby - 扩展方法不是 "the Ruby way"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310387/