我想允许用户将选项传递给可以是单个对象或数组的方法。下面的代码工作,假设 `opts[:variable_length_opt] 被定义:
def initialize(opts={})
@ivar = *opts[:variable_length_opt]
end
但如果未设置该选项,我也希望能够设置默认值。但是这段代码不起作用:
def initialize(opts={})
@ivar = (opts[:variable_length_opt] ? *opts[:variable_length_opt] : default_value)
end
它抛出一个unexpected tSTAR
错误。我知道还有其他更冗长的方法来完成我所追求的,但我想知道是否还有其他简短的替代方法。另外,splat的限制是什么?我想不出一个很好的理由让它在这里不可用。