Как передать оператор в качестве параметра в ruby? - PullRequest
3 голосов
/ 15 октября 2019

Вот что у меня есть:

operator = '>'

Вот что я попробовал:

5 operator.to_sym 4

#invalid result => 
5 :>= 4 

Ожидается : 5 > 4

Ответы [ 2 ]

8 голосов
/ 15 октября 2019

Вы можете использовать public_send или (send в зависимости от метода):

operator = :>
5.public_send(operator, 4)
# true

public_send (как send) может получить метод в виде строки или символа.

В случае, если используемый вами метод не определен в классе объектов, Ruby выдаст NoMethodError.


Вы также можете сделать receiver.method(method_name).call(argument), но это еще больше:

5.method(operator).call(4)
# true
3 голосов
/ 15 октября 2019

Оформить Рубиновая строка для оператора - вам нужно использовать публичную отправку:

operator = '>'
5.public_send(operator, 4)
=> true
operator = '-'
5.public_send(operator, 4)
=> 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...