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
的对象,或者它是classclass
的实例。它不是类A
的实例,但B
是类A
的实例。此外,B
本身不是一个类,但它是一个对象。非常感谢……今天很多疑问都被澄清了。Ruby确实是面向对象的。@fd但类“class”是类“class”上的实例
B = A.new
irb(main):022:0> Class.class
=> Class