什么是"Class.new"?

Pra*_*kla 5 ruby

我不明白Sheep = Class.new下面这段代码中的部分.

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

def call_sheep
  Fence::Sheep.new.speak
end
Run Code Online (Sandbox Code Playgroud)

到底是做什么的?

Ste*_*fan 10

根据文件, Class.new

使用给定的超类创建一个新的匿名(未命名)类(或者Object如果没有给出参数).

此外,

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

Sheep 是那个常数,所以你的代码相当于:

module Fence 
  class Sheep
    def speak
      "Bah."
    end
  end
end
Run Code Online (Sandbox Code Playgroud)