【发布时间】:2020-07-28 02:53:18
【问题描述】:
我发现表达式[*1..4] 返回的结果与我执行(1..4).to_a 的结果相同,但我不明白这里的语法。我的理解是* - 在这种情况下是一元运算符 - 是 splat 运算符,在它的右边,我们有一个 Range。但是,如果只写表达式*1..4,这是一个语法错误,*(1..4) 也是一个语法错误。为什么第一个[*1..4]会起作用,具体是怎么理解的?
【问题讨论】:
-
顺便说一句,这也很好用:
r = (1..4); [*r] -
是的。括号是可选的;你可以写
r=1..4; [*r],当然和我的[*1..4]一样。但是数组上下文是至关重要的。只是*r是行不通的。