Скрипт командной строки Ruby: Попытка передать переменную в случае переключения - PullRequest
0 голосов
/ 07 июня 2018

Я создаю инструмент командной строки ruby, в котором есть оператор регистра переключателя, я хотел бы передать переменные в этом операторе регистра переключателя, например:

  input = gets.chomp
  case input
    when 'help'
      display_help
    when 'locate x, y' # this is the bit i'm stuck on
      find_location(x, y)
    when 'disappear s'
      disappear_timer(s)
    when 'exit'
      exit
    else
     puts "incorrect input"
   end

По сути, я хочу, чтобы пользовательбыть в состоянии набрать locate 54, 30 или sleep 5000 и затем вызвать функцию, которая обрабатывает число, которое они передали.Мне было интересно, как я могу передать аргументы от пользователя в выражении switch, как это для моего инструмента командной строки, как это?

1 Ответ

0 голосов
/ 07 июня 2018

Используйте Regexp совпадение внутри when:

when /locate \d+, \d+/
  find_location *input.scan(/\d+/).map(&:to_i)

Здесь мы в основном сопоставляем все, что равно locate, за которым следуют цифры, запятая, пробел, цифры.Если найдено совпадение, мы извлекаем цифры из строки с помощью String#scan, а затем преобразуем в Integer s, наконец передавая их в качестве аргумента методу find_location.

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