Ruby 为什么有些字符串方法(如下划线、tableze…)没有bang方法。。。?
我只是想知道,有些字符串方法没有等效的bang方法Ruby 为什么有些字符串方法(如下划线、tableze…)没有bang方法。。。?,ruby,Ruby,我只是想知道,有些字符串方法没有等效的bang方法 formated_index = formated_index.tableize 我以为我会写 formated_index.tableize! 。。。但我不能:-( 与String::下划线和其他String::*ize方法相同 所以有些是存在的,而另一些像是downcase!或next!是存在的。为什么这在ruby中处理得如此不一致?表格化,人性化,多元化不是ruby方法,而是对字符串类的ActiveSupport扩展,它们没有bang
formated_index = formated_index.tableize
我以为我会写
formated_index.tableize!
。。。但我不能:-(
与String::下划线
和其他String::*ize
方法相同
所以有些是存在的,而另一些像是downcase!或next!是存在的。为什么这在ruby中处理得如此不一致?
表格化
,人性化
,多元化
不是ruby方法,而是对字符串类的ActiveSupport扩展,它们没有bang变体。怀疑这是有原因的。但是好的ruby code应该总是有理由的。因为最小惊喜原则,必须有一个好的方法或者一个好的理由来解释为什么不。这并不意味着所有的代码都是经过深思熟虑的。有时你编写代码是为了完成某件事,而不是尽可能遵守每一个原则。最小惊喜原则(POLS)并不是所有人都能理解的。Matz说这是他和精通Ruby的开发人员最不惊讶的原则。这不是一条规则,只是意味着如果你知道自己在做什么事情,事情应该是有意义的。感谢你的澄清,但这引出了一个问题:为什么ActiveSupport中没有bang变体?