Passing an operator to a function?

2020-07-16 08:29发布

问题:

Perhaps this just sounds ridiculous but I'm wondering is this possible with Ruby? Basically I have a function...

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

I'd like to be able to pass the "+" or another operator e.g "-" to the function so that it'd be something like...

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

is this possible?

回答1:

Two possibilities:

Take method/operator name as a symbol:

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

Or the more general solution: Take a block:

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


回答2:

4.send("+", 5)

Returns 9

http://corelib.rubyonrails.org/classes/Object.html#M001077



标签: ruby