Due to the syntax sugar of methods whose names end in=
, the only way that you can actually pass multiple parameters to the method is to bypass the syntax sugar and use send
…
h.send(:strategy=, :mystrategy, :backward )
…in which case you might as well just use a normal method with better names:
h.set_strategy :mystrategy, :backward
However, you could rewrite your method to automatically un-array the values if you knew that an array is never legal for the parameter:
def strategy=( value )
if value.is_a?( Array )
@strategy << value.first
@strategy.direction = value.last
else
@strategy = value
end
end
This seems like a gross hack to me, however. I would use a non-assigment method name with multiple arguments if you need them.
An alternative suggestion: if the only directions are :forward
and :backward
what about:
def forward_strategy=( name )
@strategy << name
@strategy.direction = :forward
end
def reverse_strategy=( name )
@strategy << name
@strategy.direction = :backward
end
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…