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

Project1

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

[已经解决] 把for循环翻译成each的问题

[复制链接]

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
跳转到指定楼层
1
发表于 2015-1-22 10:58:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
都说for循环这不好那不好,现在已经闹到恨不得要杀死for循环的地步了...
迫于压力,聪聪也不敢用for循环,现在违心地把for循环翻译成each,却遇到了麻烦...
RUBY 代码复制
  1. def ke_lian_de_for
  2.   for i in 0...5
  3.     a = 0 if a.nil?
  4.     a += 5
  5.     p [1, a] # => [1,5] [1,10] [1,15] [1,20] [1,25]
  6.   end
  7.   (0...5).each{|i|
  8.     b = 0 if b.nil?
  9.     b += 5
  10.     p [2, b] # => [2,5] [2,5] [2,5] [2,5] [2,5]
  11.   }
  12. end  
  13. ke_lian_de_for

于是发现每次each循环,局部变量就会初始化,这不是聪聪希望的...
聪聪希望each的b能得到像for的a那样的累加值,循环内部的局部变量不初始化,而且不愿用实例变量、类变量和全局变量...只用局部变量,有什么办法吗...
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
3
 楼主| 发表于 2015-1-22 17:47:29 | 只看该作者
taroxd 发表于 2015-1-22 12:35
这种事情要循环做什么

5.step(25, 5) { |i| p [1, i] } # => [1,5] [1,10] [1,15] [1,20] [1,25] [/pre]

原来在块外面定义局部变量就能解决了...谢谢TD版主大人...
我这个for和each只是为了说清楚问题写的简单例子,实际问题不是这么简单...真是这么简单的循环也也不会照这么写的...总之谢谢...
顺便请版主大人结帖...@VIPArcher  
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2015-1-22 12:35:40 | 只看该作者
本帖最后由 taroxd 于 2015-1-22 12:45 编辑

这种事情要循环做什么

RUBY 代码复制
  1. 5.step(25, 5) { |i| p [1, i] } # => [1,5] [1,10] [1,15] [1,20] [1,25]


块中定义的局部变量在块结束后会消失,这正是 each 之类的迭代器的优越性之一。
不想让局部变量消失的话,在块的*外面*给局部变量赋值就好了。

不推荐 for 的原因,你看完上面那句代码之后,是不是明白一些了呢?

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 18:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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