gpt4 book ai didi

ruby - [*2..10] 是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:40 24 4
gpt4 key购买 nike

为了填充数组,我可以编写 [*2..10],它给出 [2, 3, 4, 5, 6, 7, 8, 9, 10].

这是如何运作的?

最佳答案

表达式 2..10 使用 .. 运算符创建一个 Range 对象。

通常,* 会展平数组,以便将单个对象转换为方法的单个参数列表。当应用于非数组对象时,它将首先尝试通过调用 to_a 将对象转换为 Array。因此,将 * 应用于 Range 首先对其调用 to_a ,它返回位于该范围内的值的数组。然后该数组被 * 扁平化为值列表。

最后,将该值列表放在方括号 [...] 内生成一个新的 Array。这与在 Range 上调用 to_a 的结果相同,但它在此过程中经历了几个额外的步骤(通过 * 展平和取消展平)通过 [])。

请注意,在赋值的右侧,您可以不使用方括号,无论文字 (x=1,2,3 产生与 x=[ 相同的结果1,2,3]) 或 splatted(x=*2..10 产生与 x=[*2..10] 相同的结果) .

关于ruby - [*2..10] 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561701/

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