我想eval()
在 Ruby 1.9 中以交互方式测试一小段 ruby 代码。很久以前(大约 Ruby 1.4)我在互联网上发现了一个提供此功能的简洁脚本。这是简化和简化的版本:
line = ''
$stdout.sync = true
print "ruby> "
while true
input = gets
if input
line = input
else
break if line == ''
end
begin
print eval(line).inspect, "\n"
rescue ScriptError, StandardError
$! = 'exception raised' unless $!
print "ERROR: ", $!, "\n"
end
break if not input
line = ''
print "ruby> "
end
我能够做类似的事情:
ruby> str = "a:b:c"
"a:b:c"
ruby> str.split /:/
["a", "b", "c"]
ruby>
该脚本在 Ruby 1.8 之前可以正常工作,但由于eval()
. 现在我不能再制作局部变量str
了。相反,我收到以下明显消息:
ERROR: undefined local variable or method `str' for main:Object
有没有办法修复或绕过这种行为eval()
?我读过一些关于绑定的东西,但我不知道如何在这里做。
当然有,irb
但在那个工具中我不能像 in 那样使用井号"abc#{var}def"
。如果我尝试然后irb
注释掉整行。