gpt4 book ai didi

ruby - class << self 是什么意思?

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

关于:

class Test
class << self
def hi
puts "Hi there"
end
end

我脑海中浮现出如下画面:

因为在 Ruby 中一切都是对象,类本身就是类 Class 的对象。 .调用class << self你打开Class Test 内部的定义并注入(inject)一些实例方法。自 TestClass 的实例,您可以像在对象上调用实例方法一样调用这些方法:Test.hi .

以下是有助于可视化我之前句子的伪代码:

class Class
def hi
puts “Hi there”
end
end

Test = Class.new(class Test
end)
Test.hi

我做对了吗?

最佳答案

假设我们有一个对象 objA .此时,obj 的祖先层次结构的类(class)是:

[A, ...]

什么 class << obj; ... end做的是它创建了一个类 B其唯一实例是 obj , 并将其放入 obj 的祖先层次结构中这样 obj 的祖先层次结构的类变为:

[B, A, ...]

如果你写class << self; ... endTest 的范围内, 那么它的主体将是一个类,其唯一实例是 Test .如果你定义一个实例方法hi在该主体内,然后将应用于该类的实例,即 Test .因此你将能够做 Test.hi .

关于ruby - class << self 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925551/

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