gpt4 book ai didi

Ruby - 在类方法中引用 self

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:43 25 4
gpt4 key购买 nike

在 RubyMonk 上查看这段代码:

 class Item
def initialize(item)
@item = item
end
def show
puts "The item name is: #{self}"
end
def to_s
"#{@item}"
end
end

Item.new("potion").show

代码通过了,但是 self 变量的使用对我来说有点模棱两可。您可以在 show 方法中轻松地将 to_s 替换为 self 并获得相同的结果。有人可以解释两种插值之间的区别以及为什么/如何在这里使用 self 吗?此外,如果没有方法 to_s,代码将返回一个代理。这里定义to_s有什么意义呢?

最佳答案

字符串插值隐式调用对象的 to_s 方法。因此,当您在 Item 上定义 to_s 方法时,您就是在明确告诉该对象如何根据字符串表示自己。在这种情况下使用 self 是因为在 Item 对象的插值中存在对 to_s 的隐式调用。定义 to_s 显式 告诉 Item 如何在字符串中呈现自己。

有关更多详细信息,请查看 this excellent post on explicit vs. implicit conversion methods.

关于Ruby - 在类方法中引用 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791208/

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