Project1

标题: for循环的写法操作看似一样,但为什么结果不同... [打印本页]

作者: 正太君    时间: 2014-10-31 08:25
标题: for循环的写法操作看似一样,但为什么结果不同...
RUBY 代码复制
  1. a = [0,1,2,3,4]
  2. for i in a
  3.   i = 5
  4. end
  5. p a # => [0,1,2,3,4]

RUBY 代码复制
  1. a = [0,1,2,3,4]
  2. for i in 0...a.size
  3.   a[i] = 5
  4. end
  5. p a # => [5,5,5,5,5]

我想知道为什么会得到不同的结果...
作者: 泉塚四季    时间: 2014-10-31 08:49
本帖最后由 泉塚四季 于 2014-10-31 09:55 编辑
  1. a=0
  2. b=a
  3. b=1
  4. p a # 0
  5. a = [0,1,2,3,4]
  6. for i in 0...a.size
  7. i = 5
  8. end
  9. p a # => [0,1,2,3,4]
复制代码
为什么不用each?
作者: cinderelmini    时间: 2014-10-31 10:55
因为第一种是用把数组a里面的东西代进i,
然后=5的是i而不是a,p的是a,所以a不会有改变~
第二种是直接把a里面的每个东西都改成5了~
所以就变了~
作者: taroxd    时间: 2014-10-31 15:29
本帖最后由 taroxd 于 2014-10-31 15:30 编辑

a.fill(5)

a.map! { 5 }

这两种写法都是可以的。前面一种的话,数组所有元素都是同一对象的引用,因为是整数所以没有问题。
用 for 循环只会限制你的思路。在 Ruby 中还是少用 for 循环比较好
作者: 晴兰    时间: 2014-10-31 22:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: chd114    时间: 2014-11-1 08:28
i = 5和a[i] = 5不是一个东西吧···




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