Ruby命令行脚本:尝试在switch case中传递变量

时间:2018-06-07 16:36:12

标签: ruby regex

我正在创建一个带有switch case语句的ruby命令行工具,我想在这个switch case语句中传递变量,例如:

  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, 30sleep 5000,然后调用一个处理他们传递的数字的函数。我想知道如何在这样的命令行工具中为这样的switch语句中的用户传递参数?

1 个答案:

答案 0 :(得分:2)

when内使用Regexp匹配器:

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

这里我们基本匹配locate后跟数字,逗号,空格,数字。如果匹配,我们使用String#scan从字符串中提取数字,然后转换为Integer,最后将它们作为参数传递给find_location方法。