Project1

标题: 实例变量莫名其妙改变了 [打印本页]

作者: srwjrevenger    时间: 2019-10-21 22:46
标题: 实例变量莫名其妙改变了
本帖最后由 srwjrevenger 于 2019-10-21 23:25 编辑

发错区了,我其实问的是ACE……
实例变量莫名其妙改变,解决方法是删除绿色那一整行
我是想知道为什么@hasha没有进行相关操作却会增加“1取消”的原因





作者: KB.Driver    时间: 2019-10-21 23:21
push(obj)的作用是在数组末尾加入obj,当然会修改数组

ary[ary.size] = x
数组下标由0开始,长度为5的数组最后一个值是ary[4]
对(正向)超出数组索引的元素赋值,就会增加数组的长度
作者: srwjrevenger    时间: 2019-10-21 23:29
KB.Driver 发表于 2019-10-21 23:21
push(obj)的作用是在数组末尾加入obj,当然会修改数组

ary[ary.size] = x

不好意思,是我之前没有说清楚的错。我想知道的是 @hasha 没有进行相关操作却会增加“1取消”的原因

作者: SixRC    时间: 2019-10-22 00:44
假如有  "你" = "我"
然后"你"做了一件好事
是不是"我"就会受到表扬啊
因为这里"你""我"是同一的
但假如 "你" = "我"的克隆
那么你就是你 我就是我了
ruby就是这样实现的
hasha = hash
他们就都指向老一个数组
但是hasha = hash.clone
那就不一样啦
绝绝绝大部分对象在赋值时都是这样默认非克隆的
比方字符串
但要注意克隆是有限度的
比方数组套数组
若只克隆一层那对第二层的操作还是同一的
大体上是这样
细节的问题慢慢会懂
作者: fux2    时间: 2019-10-22 07:19
当赋值对象不是字符串和数字时赋值都是赋的引用,指向同一个对象
作者: SixRC    时间: 2019-10-22 11:41
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 的引用被新值覆盖了





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1