- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
对于使用 bang(!
) 的方法命名,有一个 Ruby 约定。约定是如果方法改变了self
,我们使用bang让其他人知道 self 修改的行为。
例如,Array#select
不会更改self
,但Array#select!
会。但是 Array#keep_if
确实改变了自己。没有什么叫做 Array#keep_if!
。
不遵守约定的原因可能是什么?
最佳答案
Ruby 的创造者 Matz 写道:
The bang (!) does not mean "destructive" nor lack of it mean non destructive either. The bang sign means "the bang version is more dangerous than its non bang counterpart; handle with care". Since Ruby has a lot of "destructive" methods, if bang signs follow your opinion, every Ruby program would be full of bangs, thus ugly.
来源:Ruby Forum
关于ruby - 为什么 Array#keep_if 不遵循 Ruby 约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33449620/
我正在尝试将字符串与对象数组进行比较。因此,当字符串值与数组中的该对象匹配时,它将保留它。 例子如下: sample = [#, #, #] name = "Michelle" 所以我尝试了以下方
我有一个这样的数组: array = ["john-56", "admin-57", "duke-58", "duke-65", "john-56", "admin-57", "ro
[1,2,3].partition.inject(0) do |acc, x| x>2 # this line is intended to be used by `partition` a
def unique(arr) return arr.keep_if { |x| arr.count(x) == 1 } end print unique([2, 5, 5, 4, 22, 8,
对于使用 bang(!) 的方法命名,有一个 Ruby 约定。约定是如果方法改变了self,我们使用bang让其他人知道 self 修改的行为。 例如,Array#select 不会更改self,但A
考虑命令的顺序: hash1 = {1 => "a" , 2 => "b" , 3 => "c" , 4 => "d"} hash2 = {3 => "hello", 4 => "world" , 5
我是一名优秀的程序员,十分优秀!