[英]Why do I get two lines of output from this code?
为什么下面的ruby程序两次打印输出?
a = Proc.new do
class A
def initialize d
@c = d
end
def print
p @c
end
end
b = A.new(2)
p b.print
end
a.call
实际输出
2
2
预期产量
2
为什么下面的ruby程序两次打印输出?
这是第一张印刷品
p @c
其结果将成为方法print
返回值,然后依次打印
p b.print
方法p
返回打印的值。 这样便可以得到两条具有相同输出的行。
a = Proc.new do
class A
def initialize d
@c = d
end
def print
p @c
end
end
b = A.new(2)
b.print #you need just to call method print
end
a.call
在ruby中, p
都打印其参数并返回它,因此b.print
都打印并返回2; 然后p b.print
再次打印2。
Ruby上的命令“ p”表示您要“打印”某些东西……您的代码两次执行“ p”命令。 只要删除不需要的东西,它将起作用。
a = Proc.new do
class A
def initialize d
@c = d
end
def print
p @c #FIRST PRINT
end
end
b = A.new(2)
p b.print #SECOND PRINT
end
a.call
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.