可选参数语法

时间:2015-08-14 21:34:03

标签: ruby optional-arguments

我在this question下找到了这个代码,它检查是否有任何参数传递给方法:

def foo(bar = (bar_set = true; :baz))
  if bar_set
    # optional argument was supplied
  end
end

此默认值中; :baz的用途是什么,我将在何种情况下使用它?

1 个答案:

答案 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将为:bazbar_set的值将是给定的。