我正在创建一个带有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, 30
或sleep 5000
,然后调用一个处理他们传递的数字的函数。我想知道如何在这样的命令行工具中为这样的switch语句中的用户传递参数?
答案 0 :(得分:2)
在when
内使用Regexp
匹配器:
when /locate \d+, \d+/
find_location *input.scan(/\d+/).map(&:to_i)
这里我们基本匹配locate
后跟数字,逗号,空格,数字。如果匹配,我们使用String#scan
从字符串中提取数字,然后转换为Integer
,最后将它们作为参数传递给find_location
方法。