Ruby的类表达式---它与`Class.new`有什么不同?

Ray*_*oal 5 ruby class syntactic-sugar

在Ruby中,类只是类的对象Class.所以我们可以通过发送消息new来实例化新类Class,如下所示:

Rat = Class.new do
  def initialize(name); @name = name; end
  def squeak; "#{@name} says squeak"; end
end

marshi = Rat.new 'Marshmallow'
puts marshi.squeak
Run Code Online (Sandbox Code Playgroud)

我认为,这完全有效,好像我用第一行替换了第一行

class Rat
Run Code Online (Sandbox Code Playgroud)

这是一个类表达式(根据Matz的书中的7.1.1节).所以看起来类表达只不过是语法糖.如果是这种情况,这个事实在哪里得到权威表达?它是在Ruby源代码中吗?文档?

如果没有,那么类表达式与Class.new直接调用有什么不同吗?我已经能够确定的是,类表达式返回最后一个表达式(这将是squeak方法)但是使用Class.new和返回新类本身的赋值.但这似乎不是我添加类表达式语法的理由,所以我想我可能会遗漏一些东西.