我试图理解为什么这段代码重复了两次age和name方法。当我运行代码时,它要求输入age和name,但是,它又要求输入name和age。我不确定我到底做错了什么?它只要求输入一次。
我尝试了全局变量,它起作用了,但我真的不想使用全局变量。
require 'date'
def get_age()
puts("Enter your age in years: ")
age = gets.to_i()
return age
end
def get_string()
puts("Enter your name: ")
s = gets.chomp()
return s
end
def print_year_born(get_age)
year_born = Date.today.year - get_age
puts(get_string + "\sYou were born in: " + year_born.to_s)
end
def main()
get_age()
get_string()
print_year_born(get_age)
end
main()
我错过了什么?
1条答案
按热度按时间mspsb9vt1#
它被调用了两次,因为你调用了它两次。在
main
的第1行,你调用get_age()
并丢弃它返回的值。然后在第3行,你调用print_year_born(get_age)
,它再次调用get_age
,但这次传递返回给print_year_born
的值。你似乎对方法的工作方式有些困惑。每次你输入
get_age
,你都在调用方法。你不必在第1行和第2行单独调用方法,那些简单的调用(get_age()
/get_string()
)是完全多余的。它们调用方法,但对返回的值完全不做任何事情。现在还不清楚你认为主发球中的前两行有什么用途,但你应该把它们去掉: