Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing an operator to a function?

Tags:

ruby

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?

like image 446
Skizit Avatar asked Oct 25 '10 11:10

Skizit


1 Answers

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, &:+
like image 100
sepp2k Avatar answered Sep 28 '22 17:09

sepp2k