c.uniq {|x|x[/^b/]} => [-6ren">
gpt4 book ai didi

ruby - 解释Ruby Array uniq方法的一个表达式

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

c = %w(a b c d)
1.8.7 :025 > c.uniq {|x|x[/^a/]}
=> ["a", "b"]
1.8.7 :026 > c.uniq {|x|x[/^b/]}
=> ["a", "b"]
1.8.7 :027 > c.uniq {|x|x[/^c/]}
=> ["a", "c"]
1.8.7 :029 > c.uniq {|x|x =~ [/^c/]}
=> ["a"]
1.8.7 :030 > c.uniq {|s|s[/[^abc]/]}
=> ["a", "d"]

我理解正则表达式,我不理解 uniq block 是如何工作的。

最佳答案

这有点棘手。

c = %w(a b c d)
1.8.7 :025 > c.uniq {|x|x[/^a/]}
=> ["a", "b"]

此 block 中的 x 是数组中的每个值。您通过“字符串是否以 a 开头?”来定义唯一性。值 a 是第一个评估为 true 的值,因此是第一个值。 b 是第一个评估为 false 的值,第二个也是。 cd 也计算为 false,但不是唯一的,因为已经找到计算为 false 的值.

1.8.7 :026 > c.uniq {|x|x[/^b/]}
=> ["a", "b"]

这里也是一样。 a 是第一个(false),b 是第二个(true)。

1.8.7 :027 > c.uniq {|x|x[/^c/]}
=> ["a", "c"]

在这里您看到 a 是第一个 false 值,c 是第一个评估为 true 的值因此是第二个唯一值。

1.8.7 :029 > c.uniq {|x|x =~ [/^c/]}
=> ["a"]

在这里,您通过“字符串是否与匹配不以 c 开头的字符串的正则表达式数组匹配”来定义唯一性。奇怪!

1.8.7 :030 > c.uniq {|s|s[/[^abc]/]}
=> ["a", "d"]

这里你定义了一个字符类。您通过“包含 a、b 或 c 的字符串”定义了唯一性。 a 是第一个满足 true 的。 d 是唯一评估为 false 的值。

希望对您有所帮助。

关于ruby - 解释Ruby Array uniq方法的一个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7769640/

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