gpt4 book ai didi

Ruby 在创建对象时自动调用 to_s 方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:24:16 26 4
gpt4 key购买 nike

class A
def initialize(string, number)
@string = string
@number = number
end

def to_s
"In to_s:\n #{@string}, #{@number}\n"
end
def to_a
"In to_a:\n #{@string}, #{@number}\n"
end
end
puts a = A.new("hello world", 5)

输出是

 In to_s:
hello world, 5

to_s方法是如何自动调用的?

为什么没有自动调用另一个方法,例如 to_a

既然我没有在to_s方法中写puts,为什么会打印output。

最佳答案

您将它发送到 puts,它将尝试使用 to_s 将对象呈现为字符串。

如果您将最后一行更改为:puts A.new("hello world", 5).to_a,它会在返回的数组上调用 to_s 并且A 的 to_s 不会被调用。

关于Ruby 在创建对象时自动调用 to_s 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com