对于 class 的不同之处在于 Struct 里定义的属性都是对外可以访问的. class 默认是私有的.作者: 苏小脉 时间: 2011-9-22 03:23
八云紫 发表于 2011-9-20 09:45
等同于 C++ 的 struct 结构体.
把多个不同的对象归类到一起, 思路上更符合 OO 思想吧.
不知在那点上“等同于 C++ 的 struct 结构体”?
Ruby 的 Struct 提供的是一种快速创建 Class 的功能,Struct.new 时需要捆绑一系列可读可写的属性,实例创建后就是一个有效的拥有这些属性的 Class,大致上可以看作一种类的模版,或是创建类的语法糖(盖无须明写 class ... end)。从设计模式角度来看,Struct 类是一个工厂类,它生产 Class 的实例。然工厂自身是抽象的,(在用户层)永远无法创建其自身的实例。
无法分配 Struct 对象:
Struct.allocate # => in `allocate': allocator undefined for Struct (TypeError)