UdemyでRubyコースを受講していますが、このコードが機能する理由を理解しようとしています。それは任意の2つの数を取り、それらを乗算します。
def multiply(first_num, second_num)
first_num.to_f * second_num.to_f
end
puts "Enter the first number"
first_number = gets.chomp
puts "Enter the second number"
second_number = gets.chomp
puts "The first number multiplied by the second number is #{multiply(first_number, second_number)}"
このメソッドは2つの引数を設定し、それらを使用します。次に、2つの数値が格納されます。1つはfirst_numberに、もう1つはsecond_numberに格納されます。最終的な印刷では、代わりに使用するfirst_num
とsecond_num
、FIRST_NUMBERおよびsecond_number代わりFIRST_NUMとsecond_numのに使用されます。メソッド内で初期引数を使用していないため、コードが失敗することが予想されます。なぜそれが機能するのですか?
編集:私の元の質問はグローバル変数について言及していましたが、質問を混乱させた他の言及とともに、それらの参照を削除するように編集しました。また、質問に答えました。私が本当に尋ねようとしていたのは、「なぜ2つの変数がメソッド内に含まれておらず、メソッドの引数として使用されたのか」ということでした。私はそれがどのように機能するのか気づいていませんでした。@sawaに感謝します。私をまっすぐにし、Rubyについてまだ学んでいないことを教えてくれました。
プログラムがどのように読み取られ、実行されるかを誤解しているようです。特に、メソッドが呼び出されるタイミングについて間違った考えを持っているようです。
スクリプトが実行されると、スクリプトの上部で、その時点でメソッドmultiply
が定義され、実行されません(メソッドの実行は、特定の引数で呼び出された場合にのみ実行されます)。
次にローカル変数、グローバルでないものは、first_number
およびsecond_number
コンソールからの入力に応じて設定されています。
次に、の引数内で、引数と。を使用してputs
メソッドmultiply
が呼び出されます。first_number
second_number
メソッド内の実行の定義ではない、multiply
所定の、first_number
およびsecond_number
に割り当てられているfirst_num
とsecond_num
だけメソッドの実行内でアクセスすることができ、それぞれ。
計算された値はメソッドから返され、の引数の一部にmultiply
入れられ#{}
ますputs
。そこで、メソッドto_s
は値に適用され、出力されるものの一部になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加