Передача оператора в функцию? - PullRequest
5 голосов
/ 25 октября 2010

Возможно, это звучит просто смешно, но мне интересно, возможно ли это с Руби?По сути, у меня есть функция ...

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

Я хотел бы иметь возможность передать функцию "+" или другой оператор, например "-", чтобы это было примерно так.

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

возможно ли это?

Ответы [ 2 ]

11 голосов
/ 25 октября 2010

Две возможности:

Взять имя метода / оператора как символ:

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

Или более общее решение: взять блок:

def sum a,b
  yield a,b
end
sum 42, 23, &:+
2 голосов
/ 25 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...