什么是“Class.new”?

时间:2015-07-21 06:08:39

标签: ruby

我不理解下面一段代码中的Sheep = Class.new部分。

module Fence 
  Sheep = Class.new do
    def speak
      "Bah."
    end
  end
end

def call_sheep
  Fence::Sheep.new.speak
end

究竟是做什么的?

2 个答案:

答案 0 :(得分:9)

根据文件Class.new

  

使用给定的超类创建一个新的匿名(未命名)类(如果没有给出参数,则为Object。)

此外,

  

您可以通过将类对象赋值给常量来为类赋予名称。

Sheep是常量,因此您的代码等同于:

module Fence 
  class Sheep
    def speak
      "Bah."
    end
  end
end

答案 1 :(得分:3)

Sheep = Class.new do
  def speak
    "Bah."
  end
end

Class.new 是用于在Ruby上定义类的语法。以上代码类似如下:

class Sheep
  def speak
    "Bah."
  end
end