Ruby 从对象创建对象?还是我被欺骗了

Ruby 从对象创建对象?还是我被欺骗了,ruby,object,new-operator,Ruby,Object,New Operator,下面的代码中发生了什么 A = Class.new class << A def speak puts "Dave" end end A.speak B = A.new A=Class.new 阶级 这类似于: class A end class A def A.speak puts "Dave" end end 定义空类并将其命名为A。(注意:在Ruby中,约定是以大写字母开头的标识符是常量。) 这里是在a上定义类方法(与实例方法相反)

下面的代码中发生了什么

A = Class.new

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

A.speak
B = A.new 
A=Class.new
阶级
这类似于:

class A
end
class A
  def A.speak
    puts "Dave"
  end
end
定义空类并将其命名为
A
。(注意:在Ruby中,约定是以大写字母开头的标识符是常量。)

这里是在
a
上定义类方法(与实例方法相反)

该行:

A.speak
只是调用类方法

最后:

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


回答你的另一个问题。
的类是<代码>类
!您可以在
irb
中看到这一点:

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

那么什么是一个新的概念呢?对象还是类?在Ruby中,类也是对象。所以两者都是,杰加森是对的
A
是一个类,您也可以说它是一个类为
class
的对象,或者它是class
class
的实例。它不是类
A
的实例,但
B
是类
A
的实例。此外,
B
本身不是一个类,但它是一个对象。非常感谢……今天很多疑问都被澄清了。Ruby确实是面向对象的。@fd但类“class”是类“class”上的实例
B = A.new
irb(main):022:0> Class.class
=> Class