2014-09-22 4 views
0

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

Таким образом, вместо этого длинного кода

def delete; end 
def add; end 

case gets.chomp 
    when 'Add' 
     add 
    when 'Delete' 
     delete 
end 

Я ищу что-то вдоль линии, что делает ключевое слово eval.

eval gets.chomp 

Таким образом, если вход «добавить», то он будет выполнять метод

Любые идеи «добавить»? Спасибо!

Редактировать --- Я идиот. Эваль работает. Казалось, что он не работает, потому что у меня была ошибка где-то еще. Независимо от благодарности за ответы!

ответ

1

Что-то вроде этого:

def a 
    puts "1" 
end 

def b 
    puts "2" 
end 

while true 
    eval(gets.chomp) 
end 
1

Вы можете вызывать методы с помощью символа с помощью send:

send gets.chomp 
0

ваш код должен работать, если tweeked так:

def delete; end 
def add; end 

puts "please chose a method add or delete" 
ans = gets.chomp.downcase 

case ans 
    when 'add' 
     add 
    when 'delete' 
     delete 
    else 
puts "nothing selected" 
end 
+0

Я специально сказал, что мне не нужен оператор case, такой как код – Schylar

0

Вы можете использовать «отправить», сначала поместите свои методы в класс, затем Попробуйте это :

class Methods 
     def show 
     print "show" 
     end 
    end 
    print "Enter your method name: " 
    methodName = gets.chomp 
    methodName.to_sym 
    myMethods = Methods.new 
    meMethods.send(methodName) 

Попробуйте! Вы можете использовать этот способ для создания новых языков программирования или ОГРОМНЫХ программ.

+0

Я на последней строке myMethods not meMethods – bader

Смежные вопросы