3
什么是在下面的代码从对象创建对象?还是我迷惑
A = Class.new
class << A
def speak
puts "Dave"
end
end
A.speak
B = A.new
发生的这怎么可能什么是真正发生的事情。什么是'班'班。当你正在定义一个空类,并给它取名为A
class A
end
:
什么是在下面的代码从对象创建对象?还是我迷惑
A = Class.new
class << A
def speak
puts "Dave"
end
end
A.speak
B = A.new
发生的这怎么可能什么是真正发生的事情。什么是'班'班。当你正在定义一个空类,并给它取名为A
class A
end
:
A = Class.new
这是类似的。 (注:在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
那么什么是A?一个对象还是一个类? – pankajdoharey
在Ruby类中也是对象。所以它都是。 – jergason
Jergason是正确的。 'A'是一个类,你也可以说它是一个对象,它的类是'Class',或者它是'Class'类的一个实例。它不是类“A”的一个实例,但是“B”是类“A”的一个实例。此外,'B'本身不是一个阶级,而是一个对象。 –