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 !

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

提前致谢。

4

2 回答 2

2

":mul".to_sym不是:mul

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

你只需要通过mul

于 2012-10-19T13:18:56.353 回答
1

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

":mul".to_sym
=> :":mul"
于 2012-10-19T13:15:37.427 回答