0

在方法签名中使用时,我将如何强制 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,我想做的事情可能是不可能的?

4

2 回答 2

0

如果这是针对非程序员的,那么使用putsand怎么样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
于 2013-04-20T03:55:18.617 回答
0

You can actually do it the way you requested using method_missing. Any matching units will get converted to strings instead of raising exceptions.

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
于 2013-04-20T07:18:09.920 回答