大多数人都知道_IRB作为最后回报价值的持有人的特殊含义,但这不是我在这里要求的。
相反,我问的是什么_时候用作普通旧Ruby代码中的变量名。在这里它似乎有特殊的行为,类似于“不关心变量”(àlaProlog)。以下是一些说明其独特行为的有用示例:
lambda { |x, x| 42 } # SyntaxError: duplicated argument name
lambda { |_, _| 42 }.call(4, 2) # => 42
lambda { |_, _| 42 }.call(_, _) # NameError: undefined local variable or method `_'
lambda { |_| _ + 1 }.call(42) # => 43
lambda { |_, _| _ }.call(4, 2) # 1.8.7: => 2
# 1.9.3: => 4
_ = 42
_ * 100 # => 4200
_, _ = 4, 2; _ # => 2
这些都直接在Ruby中运行(puts添加了s) - 不是IRB-以避免与其附加功能冲突。
这完全是我自己的实验的结果,因为我无法在任何地方找到关于此行为的任何文档(不可否认,这不是搜索最容易的事情)。最后,我很好奇所有这些内部是如何工作的,所以我可以更好地理解什么是特别的_。所以我要求提供文档,最好是Ruby源代码(也许是RubySpec),它们揭示了_Ruby中的行为。
慕容3067478
相关分类