2012-02-22 7 views
0

もし私が入力を1または2として与えた場合、そのプログラムがデフォルトになっても関係なく。入力を「1」と1の両方と比較しようとしました。同じ結果。 私の最初のRubyプログラム、naiveのためのplzの言い訳。プログラムがRubyのif-elseブロックに入っていない

$choice 

def getInfo 
    puts "Info" 
end 

def getMoreInfo 
    puts "MoreInfo" 
end 


def switch 
     if $choice == "1" #intentionally in "" 
      getInfo 
     elsif $choice == 2 #intentionally without "" 
      getMoreInfo 
     else 
      puts "default" 
     end 
end 


def callMainMenu 
     puts "Choose the operation:" 
     puts "[1] Get some Info" 
     puts "[2] Get some moreInfo" 
$choice=gets 
$choice.chomp 
end 


callMainMenu 
switch 
+0

ありがとう皆さん:)最初の返信だったので、答えとして「bdon」を選んだのです!皆さん、ありがとうございました!! –

+0

ルビースタイルの問題...ちょうどグローバル '$'を使わないでください。 – DGM

答えて

2

このような割り当てを行う場合は、破壊的なバージョンchompを使用する必要があります。

$choice.chomp! 

それとも

$choice = $choice.chomp 
2

これをデバッグするために、私は何だろうと、変数にあります正確に何を見るためにあなたのswitchメソッドの先頭にputs $choice.inspectを追加することです。つまり、ここでの問題は、の代わりに$choice.chompと呼んでいるということです。前者は結果を返し、後者は変数をその場で変更します。

2

$choice.chompをに変更し、//(これらを#に変更)を取り除くと、何か問題が発生します。それを洗い流してください、まだ完全ではありません。

2

を使用してください。せずにチャンプ! $ choiceを変更しません。新しい文字列を返します。これはRubyの命名規則です。