Создание Ruby условно из строки - PullRequest
0 голосов
/ 16 марта 2012

Немного странный вопрос, но я хочу сделать что-то вроде:

a = 6
b = 12

cond = "((a > 5 and b > 10) or a > 50)" #user generated

if cond
  #do something
end

Как я могу разобрать строку, подставить переменные и запустить как условный.

Ответы [ 2 ]

1 голос
/ 16 марта 2012

попробуйте это.

if eval(cond)
 # do something.
end
1 голос
/ 16 марта 2012

Получив строку Ruby cond, вы можете просто сделать eval(cond). Но имейте в виду, что люди будут критиковать это по соображениям безопасности.

Кстати, если вы действительно введете eval(cond) в свой код, он вернет ошибку, потому что строка cond в вашем примере не является допустимым кодом Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...