2016-09-01 7 views
-2

私はゼロの番号の入力を検証し、浮くここにコードを持っている:このルビコードは何をしますか?

def integer?(input) 
    input.to_i.to_s == input 
end 

def float?(input) 
    input.to_f.to_s == input 
end 

def valid_number?(input) 
    integer?(input) || float?(input) 
end 

loop do # main loop 
    number1 = '' 
    loop do 
    prompt(messages('first_number', LANGUAGE)) 
    number1 = Kernel.gets().chomp() 

    if valid_number?(number1) 
     break 
    else 
     prompt(messages('not_a_valid_number', LANGUAGE)) 
    end 
    end 

    number2 = '' 
    loop do 
    prompt(messages('second_number', LANGUAGE)) 
    number2 = Kernel.gets().chomp() 

    if valid_number?(number2) 
     break 
    else 
     prompt(messages('not_a_valid_number', LANGUAGE)) 
    end 
    end 
end 

    result = case operator 
      when '1' 
      number1.to_i() + number2.to_i() 
      when '2' 
      number1.to_i() - number2.to_i() 
      when '3' 
      number1.to_i() * number2.to_i() 
      else 
      number1.to_f()/number2.to_f() 
      end 

    prompt("The answer is: #{result}") 

このコードは素人の用語やダミーが理解できる説明で何をしますか?

def integer?(input) 
    input.to_i.to_s == input 
end 

def float?(input) 
    input.to_f.to_s == input 
end 

def valid_number?(input) 
    integer?(input) || float?(input) 
end 

ここにヘルプがありますか?私はあなたが行ごとにそれを説明することができれば感謝します!

申し訳ありません初心者はここです!これらの機能input

+1

あなたの質問はあまりにも広すぎます。正確に*あなたが*理解していないこと、理解していること、理解していること、知識レベルが何であるかなどを教えて、絞り込む必要があります。あなたが投稿したコードは、Rubyのすべての機能あなたが話しているものはまったく不明です。オブジェクトが何であるか知っていますか?あなたは方法が何であるか知っていますか?メッセージの送信内容を知っていますか?メソッド、プロシージャ、関数、および他の種類のサブルーチンの違いを理解していますか?動的アドホック包含多型を理解していますか?あなたはクラスが何であるか知っていますか? –

+0

メソッド定義は何ですか?あなたは変数が何であるか知っていますか?あなたは議論が何であるか知っていますか?パラメータが何であるか知っていますか?引数とパラメータの違いと関係は何ですか?あなたはブール値が何であるか知っていますか?真実と偽りがRubyでどのように定義されているか知っていますか?オペレーターが何であるか知っていますか?あなたはRubyの文字列を知っていますか?あなたは整数が何であるか知っていますか? Rubyに何が浮いているのか知っていますか?演算子の構文がメッセージ送信にどのように関係しているか知っていますか? Rubyのドキュメントをどこで見つけることができますか?あなたはそれを読む方法を知っていますか? –

+0

http://meta.stackoverflow.com/questions/253894/how-to-handle-explain-how-this-code-dump-works-questions/253896#comment17104_253896 –

答えて

1

は(to_sで)バック文字列へ、次いで数(整数使用to_i又はフロートを使用して(to_f))に変換されています。次に、これらの変換結果を入力と比較します。

入力が数字であるかどうかを確認します。入力されていない場合は、変換された文字列が元の文字列と等しくないためです。例えば

$ "a".to_i.to_s 
=> "0" 

列は整数(http://ruby-doc.org/core-2.0.0/String.html)に解析できない場合は0戻りto_iため。

1

文字列を整数/浮動小数点に変換し、それを文字列に変換して入力文字列と比較するだけです。入力が有効な整数/浮動小数点だった場合、変換された値は入力と同じになります。入力が有効な数値ではない場合は、整数にキャストするか浮動させるとゼロになります。元の入力と比較すると、ゼロになります。ここに例があります:

irb(main):012:0> "abc".to_i.to_s 
=> "0" 
irb(main):013:0> "123".to_i.to_s 
=> "123" 

したがって、数値以外の入力がチェックに失敗することがわかります。

関連する問題