2012-10-19 48 views
0

以下脚本(对于Ruby> = 1.9)我只是试图将字符串打印到屏幕上,而不是命令行中给出的符号。无法将命令行参数数组转换为符号参数

这是我尝试(SymbolsFromArgv.rb)

#!/usr/bin/env ruby 

def switch_sybol(symbol) 
    case symbol 
     when :add 
      "Addition !" 
     when :mul 
      "Multiplication !" 
     else 
      "Unkown symbol #{symbol} !" 
    end 
end 

puts switch_sybol(:add) 
puts switch_sybol(:mul) 
puts switch_sybol(*(ARGV.collect {|elem| elem.to_sym})) 

但是,当我推出:

$ ./SymbolsFromArgv.rb :mul 

我得到以下结果:

Addition ! 
Multiplication ! 
Unkown symbol :mul ! 

那么,为什么我没有得到“乘法”!为最后的结果?

在此先感谢。

回答

2

":mul".to_sym:mul

":mul".to_sym 
=> :":mul" 

您需要将刚刚mul

1

Shell参数被解释为字符串。所以,你应该$ ./SymbolsFromArgv.rb mul,否则这将是一样做

":mul".to_sym 
=> :":mul" 
相关问题