将操作员传递给函数?

时间:2010-10-25 11:42:17

标签: ruby

也许这听起来很荒谬,但我想知道这可能与Ruby有关吗?基本上我有一个功能...

def add a,b
 c = a + b
 return c
end

我希望能够将“+”或其他运算符(例如“ - ”)传递给函数,以便它可以像......一样......

def sum a,b,operator
 c = a operator b
 return c
end

这可能吗?

2 个答案:

答案 0 :(得分:11)

两种可能性:

将方法/操作员名称作为符号:

def sum a,b,operator
 a.send(operator, b)
end
sum 42, 23, :+

或者更一般的解决方案:采取阻止:

def sum a,b
  yield a,b
end
sum 42, 23, &:+

答案 1 :(得分:2)