【发布时间】:2013-04-20 03:42:00
【问题描述】:
在方法签名中使用时,我将如何强制 irb 的行为将变量标识符视为字符串?
我正在尝试创建一个基于 irb 的计算工具,并且我想减少在 irb shell 中使用此工具的用户的输入。假设我的用户不是 ruby 程序员或对 ruby 的语法了解很多。可能对命令行有一些便利。
我有一个文件
calculator.rb
这个文件里面是
def calculate(value, units)
... some logic
end
我指示用户像这样启动 irb
irb -r path/to/calculator.rb
我指示用户输入
calculate(10, inches)
在irb中获取返回值
如何在不要求用户理解他们必须将第二个参数用引号括起来的情况下做到这一点。换句话说,我不希望用户必须输入
calculate(10, "inches")
在将用户输入传递给脚本中的方法之前,是否可以将其转换为字符串而不是变量标识符?如果不从根本上破坏 irb shell,也许我想做的事情是不可能的?
【问题讨论】:
-
你会破坏比 IRB 更多的东西,因为你必须重新编译 Ruby 本身。对字符串进行分隔的期望是在解释器本身中定义的,并且贯穿于它使用的语言和脚本中的所有内容。如果你这样做了,一切都会停止。
-
不需要重新编译,可以使用method_missing。