设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: enghao_lim
打印 上一主题 下一主题

[讨论] 残脑帖,来说说rmxp储存后的阿尔西斯还是原来的阿尔西斯吗

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
308 小时
注册时间
2010-8-10
帖子
794
41
发表于 2010-12-5 17:49:48 | 只看该作者
此时的你不是彼时的你··············(好邪恶的诡辩论)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
63 小时
注册时间
2010-8-26
帖子
12
42
发表于 2010-12-5 20:33:27 | 只看该作者
到底是什么
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1743
在线时间
485 小时
注册时间
2006-1-7
帖子
1073
43
发表于 2010-12-6 18:04:08 | 只看该作者
我觉得这个问题涉及到了哲学领域
初从文,三年不中;后习武,校场发一矢,中鼓吏,逐之出;遂学医,有所成。自撰一良方,服之,卒。
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
43 小时
注册时间
2010-11-18
帖子
61
44
发表于 2010-12-6 19:50:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
43 小时
注册时间
2010-11-18
帖子
61
45
发表于 2010-12-6 19:50:52 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
46
发表于 2010-12-7 04:37:29 | 只看该作者
enghao_lim  感觉好像有些明白又有些不明白XD

默认是判断对象的身份(identity)是否相同,把这个概念移植到 C 层面就是判断对象结构体的内存地址的相等性。Ruby 的Object#== 方法底层是这样:

  1. VALUE
  2. rb_obj_equal(VALUE obj1, VALUE obj2)
  3. {
  4.     if (obj1 == obj2) return Qtrue;
  5.     return Qfalse;
  6. }
复制代码

  1. rb_define_method(rb_cBasicObject, "==", rb_obj_equal, 1);
复制代码
C 的 `==' 运算符用在指针上时就是比较地址了。

在 Ruby 中,可以做如下的覆盖:

  1. class Student
  2.         attr :id
  3.         attr :name
  4.         def initialize(id, name)
  5.                 @id = id
  6.                 @name = name
  7.         end
  8.         def ==(student)
  9.                 return @id == student.id && @name == student.name
  10.         end
  11. end

  12. student = Student.new(100001, "阿尔西斯")
  13. p student == Marshal.load(Marshal.dump(student)) # true
复制代码
就可以看见输出是 true 了:handshake

点评

另外这种做法用不好就会异常,为什么?自己想去。楼主说的这种情况,其实完全没必要这么做。  发表于 2010-12-24 13:46
实际的项目中,几十个属性什么的复杂的结构是很常见的,你如果是因为楼主说的原因而要这么搞,那我就要佩服你的耐心或者你对机器速度的信心了  发表于 2010-12-24 13:38
在进行全序定义的时候经常要这么搞,如果元素是这样的 Student 类型的话。改了一个对象的属性,自然 Student#== 就返回 false 了。  发表于 2010-12-23 20:59
还是不要这么搞,因为两个不是同一个对象,混淆了就麻烦了(改了一个对象的属性,另外一个是不会被改的。)  发表于 2010-12-23 19:37
求拜师 /(_ _)\  发表于 2010-12-7 08:51

评分

参与人数 1星屑 +40 收起 理由
enghao_lim + 40 感谢。

查看全部评分

[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复

使用道具 举报

Lv1.梦旅人

CODE GEASS

梦石
0
星屑
50
在线时间
619 小时
注册时间
2010-8-16
帖子
534
47
发表于 2010-12-9 19:38:35 | 只看该作者
...........阿尔西斯吗...


魔之哆啦于2010-12-9 19:38补充以下内容:
...........阿尔西斯吗...
江南何日?引人残,卷西风岁月,迷人倦。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
457
在线时间
1409 小时
注册时间
2010-9-23
帖子
557
48
发表于 2010-12-23 16:31:34 | 只看该作者
让我想起了苏格拉底与柏拉图...
回复

使用道具 举报

Lv1.梦旅人

CHAOS

梦石
0
星屑
107
在线时间
245 小时
注册时间
2005-11-4
帖子
3521

贵宾

49
发表于 2010-12-23 19:30:39 | 只看该作者
人物仓库什么的,存ID就行了,没必要连对象一起存进去。
反序列化什么的其实是新建了一个对象,这个新建的对象已经不是原来的对象了。
其实$game_party.actors里存的是通过ID从$game_actors里找到的人物,所以两个才是一样的。而前面那个是两次反序列化得到的两个不同的对象。


chaochao于2010-12-23 20:12补充以下内容:
如果是我的人物仓库的话,你看看Scene_Load里的 read_save_data方法的最后有没有$game_party.refresh这句,如果没有,你是不是改过代码或者用其它人的代码导致了这个问题。嘛,没有就加上吧。

点评

确实是在他人的帖找到的 -_- ||  发表于 2010-12-23 20:50
很好的问题,我是在帮我弟看的时候发现的……解决了过后就稍微测试了以下这个而已。  发表于 2010-12-23 20:28
是吗?我的人物仓库没有这样的问题啊。  发表于 2010-12-23 20:09
这贴还不是因为你的人物仓库搞出来的,我几乎看遍站上所有的人物仓库了……  发表于 2010-12-23 19:53
梦想世界,在你伸手!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
53 小时
注册时间
2009-9-23
帖子
123
50
发表于 2010-12-23 21:18:41 | 只看该作者
回帖后LZ还是LZ马-0-? 好吧 我提前选了第一项
啥都懂点...啥都干过... 所以啥都不专业...
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 10:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表