很抱歉不知道如何更好地陈述这个问题。
我注意到 {} 的块语法如何绑定到紧靠左侧的对象,然后注意到 do/end 绑定到开始该行的对象。在这个过程中,我注意到了这一点:
def a(*)
puts "a: #{block_given?}"
end
def b
puts "b: #{block_given?}"
end
a b {}
#=> b: true
#=> a: false
a b do end
#=> b: false
#=> a: true
令人困惑的是我不需要方法'b'上的(*)运算符(或那里的任何参数),并且两个方法调用行都会导致相同的错误。
我只是不确定如果我在方法 'a' 中没有 (*) 参数会发生什么,那么它会显示“参数数量错误 1 对 0”,但我传递的参数是什么?为什么它只给'a'?