Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么有些字符串方法(如下划线、tableze…)没有bang方法。。。?_Ruby - Fatal编程技术网

Ruby 为什么有些字符串方法(如下划线、tableze…)没有bang方法。。。?

Ruby 为什么有些字符串方法(如下划线、tableze…)没有bang方法。。。?,ruby,Ruby,我只是想知道,有些字符串方法没有等效的bang方法 formated_index = formated_index.tableize 我以为我会写 formated_index.tableize! 。。。但我不能:-( 与String::下划线和其他String::*ize方法相同 所以有些是存在的,而另一些像是downcase!或next!是存在的。为什么这在ruby中处理得如此不一致?表格化,人性化,多元化不是ruby方法,而是对字符串类的ActiveSupport扩展,它们没有bang

我只是想知道,有些字符串方法没有等效的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变体?