2012-10-19 2 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

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

아니다

1

셸 인수는 문자열로 해석됩니다. 그래서 당신은 $ ./SymbolsFromArgv.rb mul해야한다, 그렇지 않으면

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