在方法签名中使用时,如何强制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")
是否可以将用户输入转换为字符串而不是变量标识符,然后将其传递给我的脚本中的my方法?如果没有从根本上打破irb shell,我想做什么是不可能的?
答案 0 :(得分:0)
如果这是针对非程序员的,那么使用puts
和gets
怎么样?
def calculate
puts "Which number would you like to convert?"
number = gets.to_i
puts "What do you want to convert it to?"
type = gets
# your conversion logic
puts result
end
答案 1 :(得分:0)
您实际上可以按照您使用method_missing的方式执行此操作。任何匹配的单位都将转换为字符串,而不是引发异常。
SO_CALC_UNITS = %w[inches feet yards meters parsecs]
def method_missing(method)
if SO_CALC_UNITS.include?(method.to_s)
method.to_s
else
super(method)
end
end