上文补充
在 Ruby基础语法(1) 中有一些没有提到,这里补充一下。
{}
与 do end
前面说过,{}
的优先级比 do end
高,没有详细介绍,这里给个示例证明一下。
# 使用 *arg 吸收参数以消除参数不匹配的警告def first *arg yield "first" if block_given?enddef second *arg yield "second" if block_given?endfirst second { |str| puts str }# secondfirst second do |str| puts str end# first
可以看出,{}
是跟最右边的方法调用关联,而 do end
则是跟最左边的方法调用关联。
[…]
也会有想更换的念头。旅行,正好提供了这样一个机会,