为什么以下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
答案 0 :(得分:2)
为什么以下ruby程序打印输出两次?
这是第一次印刷
p @c
此结果将成为方法print
的返回值,然后将依次打印
p b.print
方法p
返回打印的值。这就是你如何得到两条具有相同输出的线。
答案 1 :(得分:1)
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
答案 2 :(得分:0)
在ruby中,p
打印其参数并返回它,因此b.print
打印并返回2;然后p b.print
再次打印2。
答案 3 :(得分:0)
命令" p"在Ruby上意味着你想要" print"一些东西......你的代码做了" p"命令两次。只需删除不需要的内容即可。
void func(int (*a)[4]) { //passing a 2D array
a[1][2] = 100; //modified an element here of 2D array
delete a; //Would have an effect on the outside. Would delete a[0][0]'s memory outside.
}