Yon*_*Noh 2 ruby ruby-on-rails
a = [1,2,3]
a.uniq! # nil
a.uniq # [1,2,3]
Run Code Online (Sandbox Code Playgroud)
为什么a.uniq!不是[1,2,3]?
让我知道原因.谢谢!
您需要阅读Ruby文档.
该uniq方法通过删除self中的重复值来返回一个新数组.如果未找到重复项,则返回相同的数组值.
a = [ "a", "a", "b", "b", "c" ]
a.uniq # => ["a", "b", "c"]
b = [ "a", "b", "c" ]
b.uniq # => ["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
该uniq!方法从self中删除重复元素,nil如果未进行任何更改则返回(即,未找到重复项).
a = [ "a", "a", "b", "b", "c" ]
a.uniq! # => ["a", "b", "c"]
b = [ "a", "b", "c" ]
b.uniq! # => nil
Run Code Online (Sandbox Code Playgroud)
大多数以 bang (!) 结尾的方法都会更改变量,而没有它的方法只会返回更改后的变量。
所以,如果你有这样的事情:
a = [1, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |