将操作员传递给函数?

Ski*_*zit 5 ruby

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

def add a,b
 c = a + b
 return c
end
Run Code Online (Sandbox Code Playgroud)

我希望能够将"+"或其他操作符(例如" - ")传递给函数,以便它可以像...

def sum a,b,operator
 c = a operator b
 return c
end
Run Code Online (Sandbox Code Playgroud)

这可能吗?

sep*_*p2k 11

两种可能性:

将方法/运算符名称作为符号:

def sum a,b,operator
 a.send(operator, b)
end
sum 42, 23, :+
Run Code Online (Sandbox Code Playgroud)

或者更通用的解决方案:采取一个块:

def sum a,b
  yield a,b
end
sum 42, 23, &:+
Run Code Online (Sandbox Code Playgroud)