[英]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.