a = [1,2,3]
a.uniq! # nil
a.uniq # [1,2,3]为什么是a.uniq!不是1,2,3?
告诉我原因。谢谢!
发布于 2015-11-25 18:09:13
大多数方法以bang (!)结尾。更改变量,而没有变量的则返回更改后的变量。
所以,如果你有这样的东西
a = [1, 1, 2, 3]a.uniq将返回[1, 2, 3],但不会更改a,而a!将修改a以与[1, 2, 3]相等
[1] pry(main)> a = [1,1,2,3]
=> [1, 1, 2, 3]
[2] pry(main)> a.uniq
=> [1, 2, 3]
[3] pry(main)> a
=> [1, 1, 2, 3]
[4] pry(main)> a.uniq!
=> [1, 2, 3]
[5] pry(main)> a
=> [1, 2, 3]
[6] pry(main)> a.uniq!
=> nil
[7] pry(main)> a
=> [1, 2, 3]发布于 2015-11-25 18:11:56
您需要阅读红宝石文档。
uniq方法通过删除self中的重复值返回一个新数组。如果没有找到重复项,则返回相同的数组值。
a = [ "a", "a", "b", "b", "c" ]
a.uniq # => ["a", "b", "c"]
b = [ "a", "b", "c" ]
b.uniq # => ["a", "b", "c"]uniq!方法从self中删除重复的元素,如果不进行任何更改(即没有找到重复的元素),则返回nil。
a = [ "a", "a", "b", "b", "c" ]
a.uniq! # => ["a", "b", "c"]
b = [ "a", "b", "c" ]
b.uniq! # => nilhttps://stackoverflow.com/questions/33923492
复制相似问题