查看: 1865|回复: 5

[已经解决] 关于Struct.new

  [复制链接]

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
回帖
2982

贵宾

发表于 2011-9-19 20:16:56 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
之前看KGC分配属性点的脚本里就看见了这玩意。
虽然好奇是什么,但也没怎么在意。
今天又看见了,就问问了。
这个Struct.new到底是神马?

点评

那么我就不知道了,前辈都不知道,我怎么可能知道T T  发表于 2011-9-19 20:42
梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
回帖
1427
发表于 2011-9-19 20:27:57 | 显示全部楼层
Struct英文不是结构的意思咩=w=?

点评

这个知道,英文的构造,结构的意思。就是这个Struct.new在F1也找不着,所以来这问了。  发表于 2011-9-19 20:40
小艾工作室开张= =
回复

使用道具 举报

梦石
0
星屑
50
在线时间
1071 小时
注册时间
2011-5-12
回帖
2260

贵宾

发表于 2011-9-20 05:41:01 | 显示全部楼层
也是不懂这语句,倒是看过这帖:
http://www.ruby-doc.org/core/classes/Struct.html
找我请找芙蕾娅
顺带一提,完全看得懂我头像请捡起你自己的节操哟(自重
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2011-9-20 06:44:33 | 显示全部楼层
结构体,可以把多种变量设置成为多个属性,看起来有点像Class,又有点像Hash

评分

参与人数 1星屑 +14 收起 理由
feizhaodan + 14 谢谢

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

神隐的主犯

梦石
0
星屑
553
在线时间
271 小时
注册时间
2008-2-22
回帖
7534

贵宾

发表于 2011-9-20 09:45:04 | 显示全部楼层
等同于 C++ 的 struct 结构体.

把多个不同的对象归类到一起, 思路上更符合 OO 思想吧.

对于 class 的不同之处在于 Struct 里定义的属性都是对外可以访问的. class 默认是私有的.

评分

参与人数 1星屑 +14 收起 理由
feizhaodan + 14 谢谢回答

查看全部评分


《天空之城 —— 破碎的命运》
回复

使用道具 举报

梦石
0
星屑
310
在线时间
953 小时
注册时间
2007-4-25
回帖
798
发表于 2011-9-22 03:23:11 | 显示全部楼层
八云紫 发表于 2011-9-20 09:45
等同于 C++ 的 struct 结构体.

把多个不同的对象归类到一起, 思路上更符合 OO 思想吧.

不知在那点上“等同于 C++ 的 struct 结构体”?

Ruby 的 Struct 提供的是一种快速创建 Class 的功能,Struct.new 时需要捆绑一系列可读可写的属性,实例创建后就是一个有效的拥有这些属性的 Class,大致上可以看作一种类的模版,或是创建类的语法糖(盖无须明写 class ... end)。从设计模式角度来看,Struct 类是一个工厂类,它生产 Class 的实例。然工厂自身是抽象的,(在用户层)永远无法创建其自身的实例。

无法分配 Struct 对象:
  1. Struct.allocate # => in `allocate': allocator undefined for Struct (TypeError)
复制代码
Struct.new 创建的实际上是 Class 元类对象:
  1. Struct.new(:id) # => #<Class:0x1d1fb88>
复制代码
把多个不同的对象归类到一起, 思路上更符合 OO 思想吧.

相对于什么“更符合”?
su@rpg.blue:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部