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
和返回新类本身的赋值.但这似乎不是我添加类表达式语法的理由,所以我想我可能会遗漏一些东西.
归档时间: |
|
查看次数: |
37 次 |
最近记录: |