以下代码中发生了什么
A = Class.new
class << A
def speak
puts "Dave"
end
end
A.speak
B = A.new
这怎么可能真正发生的事情。什么是“班级”课程。
答案 0 :(得分:4)
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