Передать входные параметры в написанную на ruby ​​оболочку? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь написать оболочку на Ruby (используя readline), реализуя некоторые пользовательские команды.Чтобы создать соответствие между заданным вводом и методами, которые определены во внешнем модуле, я использую хеш-код, подобный этому

hash = {
  'command_1' => method(:method_1),
  'command_2' => method(:method_2)
}

И как только я получаю пользовательский ввод, я передаю его хешу, вызывая связанный методс командной клавишей

hash[input.to_s].()

Мои вопросы: как я могу обрабатывать варианты одной и той же команды?(например, для команды help выдайте различный вывод в зависимости от того, задан ли флаг, например, help -command_1)
Как передать параметры в методы в хэше?(например, передайте команде open файл, который будет открыт как open file_name)

Спасибо всем заранее.

1 Ответ

0 голосов
/ 12 декабря 2018

Несмотря на то, что это может сработать, если вы достаточно спорите, простой способ заключается в следующем:

hash = {
  'command_1' => :method_1,
  'command_2' => :method_2
}

send(hash[input.to_s])

Метод send позволяет динамическую диспетчеризацию, что намного проще, чем пытаться справиться с method.

...