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

标签 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

因为您正在定义一个空类并将其命名为 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/

相关文章:

ruby-on-rails - Rspec 主题!改变 before block 的 "position"

ruby - Rhomobile 和 Appcelerator 是直接竞争对手吗?

ruby - 有没有办法在不必设置服务器的情况下制作私有(private) Ruby gem?

python - 创建从字符串命名的类对象实例?

c++ - 对分配器感知类调用复制构造函数中的 vector 元素的引用

perl - 如何防止在调用new时设置Perl Moose只读属性?

ruby-on-rails - Ruby:编写嵌套 if 条件的更具可读性的方式?

java - 迭代一个类的所有对象的循环

object - Three.js - 网格组示例? (三.Object3D() 高级)

c++ - 指针和新运算符