Есть ли способ, которым я мог повернуть что-то вроде этого:Как я могу генерировать код из текста в Руби
SomeModule.some_method do
choos_one_from 1..10
then_multiply_it_by 2
then_multiply_it_by 5
then_divide_it_by :picked_number
then_subtract 7
did_you_get 3
end
в это:
(1..10).all? do |number|
((number * 2 * 5)/number) - 7 == 3
end
?
Я попытался определить методы для всех возможных (select_one_from, then_multiply_it_by ...), которые принимают аргумент и что-то делают с ним, но так, когда вы получаете блок, он производит значения, но я действительно не знаю, как их объединить поэтому я могу получить второй кусок кода.
EDIT: У меня есть ощущение, что я должен сделать что-то вроде DSL
Но, если я не знаю порядка «then_multiply_it», «then_devide_it_by». Как мне сделать правильную цепочку в Mathesizer.new? – user2128702
@ user2128702 методы возвращают себя, поэтому порядок не имеет значения – bjhaid
@GregBurghardt Итак, 'self' возвращает весь объект Mathesizer? – user2128702