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

シェル引数は文字列として解釈されます。だからあなたはすべきです$ ./SymbolsFromArgv.rb mul、そうでなければそれはすることと同じになります

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