gpt4 book ai didi

Ruby 和 uniq 方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:42 25 4
gpt4 key购买 nike

我不明白:

2.0.0-p598 :003 > a=[1,2,3]
=> [1, 2, 3]
2.0.0-p598 :004 > (a << 1).uniq!
=> [1, 2, 3]
2.0.0-p598 :005 > a
=> [1, 2, 3]

我不明白为什么a实际上被修改了。我猜想括号会使 uniq 方法对括号中的所有内容起作用,而不是对变量起作用。谁能解释一下?

最佳答案

根据 documentation

a << 1

返回 a本身。

您的代码修改数组两次。

第一个1被推送到数组 aa(a << 1) 返回因此。然后你打电话uniq!在上面。

下面是代码一步步执行的操作,没有链接:

irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> a << 1
=> [1, 2, 3, 1]
irb(main):003:0> a
=> [1, 2, 3, 1]
irb(main):004:0> a.uniq!
=> [1, 2, 3]
irb(main):005:0> a
=> [1, 2, 3]

请注意,该方法的名称末尾有一个感叹号 (bang!)。这是 Ruby 中用于修改调用对象的方法的命名约定。你可以使用 uniq而不是 uniq!并拥有 a数组未修改。

irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> a << 1
=> [1, 2, 3, 1]
irb(main):003:0> a
=> [1, 2, 3, 1]
irb(main):004:0> a.uniq
=> [1, 2, 3]
irb(main):005:0> a
=> [1, 2, 3, 1]

关于Ruby 和 uniq 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27195574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com