我正在学习有关Udemy的Ruby课程,我试图了解为什么此代码有效。它需要任意两个数字并将它们相乘。
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)}"
该方法设置两个参数,然后使用它们。然后存储两个数字,一个在first_number中,一个在seconds_number中。在最终打印中,使用first_number和second_number代替first_num和second_num代替使用first_num
和second_num
。我希望代码会失败,因为它没有在方法中使用初始参数。为什么行得通?
编辑:我最初的问题提到了全局变量,我对其进行了编辑以删除那些引用,以及提到的其他使问题引起困惑的内容。问题也得到了解答。我真正想问的是:“为什么一个方法中不包含两个变量,而在方法中用作参数?”我不知道那是怎么回事。感谢@sawa使我挺拔,并教给我一些我还没学过的Ruby知识。
答案 0 :(得分:3)
您似乎误解了如何读取和执行程序。特别是,您似乎对调用方法的时间有错误的认识。
执行脚本时,在脚本的顶部,该方法multiply
是定义的,此时未执行(仅在调用该方法时执行方法(带有特定参数)。
然后根据控制台的输入设置 local 变量,而不是全局变量first_number
和second_number
。
然后,在puts
的参数中,方法multiply
被调用,参数为first_number
和second_number
。
在multiply
的方法执行(不是定义)中,给定的first_number
和second_number
被分配给first_num
和{{1 }},只能在方法执行期间访问。
计算出的值从方法second_num
返回,并放在multiply
参数的#{}
部分中。在那里,方法puts
应用于该值,并成为输出内容的一部分。