gpt4 book ai didi

ruby - 从对象创建对象 ?还是我被迷惑了

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

下面的代码发生了什么

A = Class.new

class << A
def speak
puts "Dave"
end
end

A.speak
B = A.new

这怎么可能是真正发生的事情。什么是“类”类。

最佳答案

A = Class.new

这类似于:

class A
end

因为您正在定义一个空类并将其命名为 A。 (注意:在 Ruby 中,约定是以大写字母开头的标识符是常量。)

class << A
def speak
puts "Dave"
end
end

类似于:

class A
def A.speak
puts "Dave"
end
end

在这里,您在 A 上定义了一个类方法(与实例方法相对)。

行:

A.speak

只是调用类方法。

最后:

B = A.new

正在创建类 A 的实例并将其分配给常量 B


回答你的另一个问题。 Class 的类是... Class!您可以在 irb 中看到:

irb(main):022:0> Class.class
=> Class

关于ruby - 从对象创建对象 ?还是我被迷惑了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250735/

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