我在this question下找到了这个代码,它检查是否有任何参数传递给方法:
def foo(bar = (bar_set = true; :baz))
if bar_set
# optional argument was supplied
end
end
此默认值中; :baz
的用途是什么,我将在何种情况下使用它?
答案 0 :(得分:1)
我们的想法是,只有在未将值传递给val seq = sequenceOf("1")
val first = (seq as Stream<String>).firstOrNull()
参数时,才会评估= (bar_set = true; :baz)
。
在Ruby中,多个连续表达式的返回值是最后一个表达式的值。因此,bar
会将值= (bar_set = true; :baz)
分配给true
,然后将bar_set
设置为:baz
的值(因为括号中的代码将计算为{{ 1}},它是最后一个表达式。)
如果传递了参数,bar
将为:baz
,bar_set
的值将是给定的。