我有一个数组
operator = ['+', '-', '*', '/']我想用它们来用四种不同的方法来求解一个方程。我想应该是这样的:
operator.map {|o| 6 o.to_sym 3 } # => [9, 3, 18, 2]我该怎么做?
发布于 2013-11-16 14:40:13
使用http://ruby-doc.org/core-2.0.0/Object.html#method-i-public_send方法如下所示:
operator = ['+', '-', '*', '/']
operator.map {|o| 2.public_send o,2 }
# => [4, 0, 4, 1]使用http://ruby-doc.org/core-2.0.0/Object.html#method-i-method和http://ruby-doc.org/core-2.0.0/Method.html#method-i-call的另一种方法
operator = ['+', '-', '*', '/']
operator.map {|o| 2.method(o).(2) }
# => [4, 0, 4, 1]发布于 2017-02-27 20:05:52
另一种方法是使用try。之所以更倾向于尝试,可能是因为try是一个更具防御性的send版本。
def try(*a, &b)
if a.empty? && block_given?
yield self
else
__send__(*a, &b)
end
end使用try执行此操作如下所示:
operator = ['+', '-', '*', '/']
val_to_be_operated = nil
operator.map { |v| val_to_be_operated.try(v, 2) }
# => [nil, nil, nil, nil]
operator.map { |o| val_to_be_operated.method(o).(2) }
# Error
val_to_be_operated = 2
operator.map { |v| val_to_be_operated.try(v, 2) }
# => [4, 0, 4, 1]https://stackoverflow.com/questions/20019668
复制相似问题