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

Project1

 找回密码
 注册会员
搜索

实例变量莫名其妙改变了

查看数: 2269 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-10-21 22:46

正文摘要:

本帖最后由 srwjrevenger 于 2019-10-21 23:25 编辑 发错区了,我其实问的是ACE…… 实例变量莫名其妙改变,解决方法是删除绿色那一整行 我是想知道为什么@hasha没有进行相关操作却会增加“1取消”的原因 ...

回复

SixRC 发表于 2019-10-22 11:41:18
fux2 发表于 2019-10-22 07:19
当赋值对象不是字符串和数字时赋值都是赋的引用,指向同一个对象

应该是赋值对象非指针的情况吧(有指针就传指针)
有布尔 nil 立即数(fixnum) 符号 我也不知道还有啥了
字符串还是共同引用的
比方
RUBY 代码复制
  1. a = "233"
  2. b = a
  3. b[0] = "3"
  4. p a #=> 333
  5. #但是
  6. b += "3"
  7. p a #=> 333
  8. #的情况 其实是新建了字符串
  9. #b 的引用被新值覆盖了

评分

参与人数 1星屑 +100 收起 理由
VIPArcher + 100 我很赞同

查看全部评分

fux2 发表于 2019-10-22 07:19:38
当赋值对象不是字符串和数字时赋值都是赋的引用,指向同一个对象

点评

谢谢鸡叔你的解答和帮忙移区了^ - ^  发表于 2019-10-22 10:13

评分

参与人数 2星屑 +100 +1 收起 理由
VIPArcher + 100 认可答案
srwjrevenger + 1 认可答案

查看全部评分

SixRC 发表于 2019-10-22 00:44:01
假如有  "你" = "我"
然后"你"做了一件好事
是不是"我"就会受到表扬啊
因为这里"你""我"是同一的
但假如 "你" = "我"的克隆
那么你就是你 我就是我了
ruby就是这样实现的
hasha = hash
他们就都指向老一个数组
但是hasha = hash.clone
那就不一样啦
绝绝绝大部分对象在赋值时都是这样默认非克隆的
比方字符串
但要注意克隆是有限度的
比方数组套数组
若只克隆一层那对第二层的操作还是同一的
大体上是这样
细节的问题慢慢会懂

点评

原来如此,我一直都以为赋值就是克隆对象了。。。。。。  发表于 2019-10-22 10:11

评分

参与人数 2星屑 +100 +1 收起 理由
VIPArcher + 100 我很赞同
srwjrevenger + 1 认可答案

查看全部评分

srwjrevenger 发表于 2019-10-21 23:29:42
KB.Driver 发表于 2019-10-21 23:21
push(obj)的作用是在数组末尾加入obj,当然会修改数组

ary[ary.size] = x

不好意思,是我之前没有说清楚的错。我想知道的是 @hasha 没有进行相关操作却会增加“1取消”的原因
KB.Driver 发表于 2019-10-21 23:21:45
push(obj)的作用是在数组末尾加入obj,当然会修改数组

ary[ary.size] = x
数组下标由0开始,长度为5的数组最后一个值是ary[4]
对(正向)超出数组索引的元素赋值,就会增加数组的长度

点评

真的真的不好意思,是我之前没有理解清楚的错OTL,谢谢了  发表于 2019-10-22 10:10

评分

参与人数 2星屑 +100 +1 收起 理由
VIPArcher + 100 认可答案
srwjrevenger + 1 认可答案

查看全部评分

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

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

GMT+8, 2024-9-21 22:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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