为什么最后一行打印两次?

问题描述:

当我运行这种方法时,出生年份的最后一行被打印两次。为什么最后一行打印两次?

def birth_year 
    p "Give me a name, any name!" 
    name = gets.chomp.capitalize 
    p "Now, how old is #{name}?" 
    age = gets.chomp.to_i 
    p "#{name} was born in #{2015 - age}!" 
end 

我的语法有问题吗?我可能做错了什么?

+1

你打电话给你的方法怎么样?我无法重现您的问题。 –

运行时没有错误的代码意味着您的语法没有任何问题。然而,在to_i之前调用chomp是多余的,这是一种不好的做法。

也许你在irb中调用这个方法。最后一行的第一次打印是代码中最后一个p的副作用。第二个是由irb打印的代码的返回值。