我想调用ruby脚本并在我调用方法时保持运行。
我有:
until (a = gets.chomp) =~ /(?:ex|qu)it/i
send(a)
end
这很有效,但我觉得它不是最好的做法吗?
有人可以向我保证/提供更好的解决方案吗?
答案 0 :(得分:1)
如果您想要REPL,可以使用IRB或PRY。 否则你可以write it yourself:
def handle_input(input)
raise StopIteration if input =~ /^(ex|qu)it$/i
result = eval(input)
puts("=> #{result}")
end
def repl(prompt)
print prompt
handle_input(gets.chomp!)
end
loop do
repl('>> ')
end
示例:
>> 2+3
=> 5
>> "test".size
=> 4
>> 3.times{|i| puts i}
0
1
2
=> 3
>> exit
使用eval
通常不是一个好主意。但是使用send
,您无法指定接收器或任何参数。