def foo(_, _='override')
_
end
p foo("bye bye")
p foo("hello", "world")
Run Code Online (Sandbox Code Playgroud)
输出:
"override"
"hello"
Run Code Online (Sandbox Code Playgroud)
我能理解结果是:
"override"
"world"
Run Code Online (Sandbox Code Playgroud)
甚至:
"bye bye"
"hello"
Run Code Online (Sandbox Code Playgroud)
但是我得到的结果让我感到困惑.
一种可能的解释是名称_代表“未使用的变量”。您甚至不应该引用它,更不用说期望它的任何值。由于它是一个特殊的名称,因此解析器会对其进行特殊处理(例如抑制“重复参数”错误)。我想没有人关心让这段代码产生逻辑结果,因为这些都是未使用的变量。
如果将其重命名为其他任何名称(例如,a),您将收到错误,因为现在此方法签名没有意义。
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |