2012-10-19 52 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" 
相關問題