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

Project1

 找回密码
 注册会员
搜索
查看: 1913|回复: 2
打印 上一主题 下一主题

[已经解决] a = b 和 a = b.dup 的区别是什么?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
跳转到指定楼层
1
发表于 2013-8-11 14:17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
在具体使用a = b 和 a = b.dup这两个方法的过程中发现,大部分情况下他们的作用一样,但是有时候,使用 a = b会出现一些意外
比如:
  1. a = 0
  2. a = b
  3. if a == b
  4.   .....
  5.   a = 1
  6. end

  7. msgbox(a) => 1
  8. msgbox(b) => 1
复制代码
出现这种使用a = b赋值后,经过一系列计算,a= b 还在工作(这个简单的例子可能没有这种情况)
如果使用a = b.dup,就不会出现上述情况
所以我想问a = b 和 a = b.dup 到底有什么区别,他们分别的工作原理是什么?

点评

嗯!毕竟VX一场,既然你找到了更适合你的工具,那么就好好钻研吧。  发表于 2013-8-11 15:09
对的,你很聪明。原先见你在VX区提问的,现在转VA了吗?  发表于 2013-8-11 15:01
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
2
发表于 2013-8-11 14:36:58 | 只看该作者
数值、逻辑值等简单对象不允许使用dup,其他对象必须使用dup否则你会无法理解ruby为什么不执行a = b。
事实上a = b后,a和b是两个一样的东西——它们什么都一样,甚至内存地址都一样(大概吧)…………
而a = b.dup或a = b.clone会得出两个内容一样而实质不同的东西。

点评

不是网络卡,是鼠标左键单双击具有相同的效应。  发表于 2013-8-11 15:10
@gaofei677 基本可以这么理解。  发表于 2013-8-11 14:44
话说 @protosssonny 现在网络还卡?  发表于 2013-8-11 14:44
意思就是说只有 a = 123 或者 a = true 才能用a = b 其他都应该用 a = b.dup 对吗?  发表于 2013-8-11 14:44

评分

参与人数 1星屑 +200 收起 理由
怪蜀黍 + 200 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2013-8-11 14:53:22 | 只看该作者
你的代码写错了,第一行应该是
  1. b = 0
复制代码
最后结果也写错了
  1. msgbox(a) => 1
  2. msgbox(b) => 0
复制代码
数值的话是独立的,b不会随着a改变,但是产生实例之后,要想得到两个相同的实例就要使用dup或者clone。
比如
  1. a = Game_Actor.new(1) # 假定1号角色的攻击力是10
  2. b = a.dup
  3. a.atk = 100
  4. c = a
  5. msgbox(a.atk) => 100
  6. msgbox(b.atk) => 10
  7. msgbox(c.atk) => 100
复制代码
注意,数组的话也要使用dup。不要误认为
  1. a = []
  2. b = a
复制代码
是数值操作,因为
  1. a = []
复制代码
相当于
  1. a = Array.new
复制代码
也是生成了实例。

点评

谢啦,谢啦  发表于 2013-8-11 15:13
哈哈,难得有人夸我聪明。原先的VX项目暂时搁置,现在VA准备参加短8,不知能不能赶得上.ps.用VA后发现,VA比VX好用很多哦  发表于 2013-8-11 15:07
简单说数值赋值用a = b 实例复制用a = b.dup (a = [] b = a.dup也是实例赋值) 这样理解对吗  发表于 2013-8-11 14:58

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠精美好人卡一张~~.

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 22:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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