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

Project1

 找回密码
 注册会员
搜索

谁能总结下each的使用。

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

正文摘要:

论坛里面都说for in 不好用each do 代替 大家是所有的地方都用each吗? 我查了下F1,我了去each怎么这么多地方都有

回复

warback 发表于 2019-11-7 10:37:24
学到了!
soulsaga 发表于 2019-10-25 13:15:34
我想问下..
用FOR怎么无限循环?

点评

原来除以0不会报错的啊,用for i in 0..2147483647也行吧!毕竟这个数是int取值范围的极限,再高就溢出了。  发表于 2019-11-1 12:50
1.0除0=无限  发表于 2019-10-25 23:24
问得来..你p一下不就知道了..P出来的结果是infinity  发表于 2019-10-25 23:22
1.0/0 啥意思  发表于 2019-10-25 21:08
谢大神指导..我很赞同  发表于 2019-10-25 17:22
hyrious 发表于 2019-10-25 06:59:21
就 RMXP 来说 for 和 each 还真是一回事……
我们推荐用 each 主要有两点

1. 隐藏迭代变量(RMVA 起)

  1. i = 42
  2. for i in 0...3 do p i end
  3. p i #=> 2
复制代码
这里外部的 i 被 for 里的 i 改变了,写代码更容易出 bug
  1. i = 42
  2. (0...3).each { |i| p i }
  3. p i #=> 42
复制代码
注意,这个特性 RMVA 里才有效,RMXP 里仍会修改外部 i

2. 隐藏不必要的迭代下标

迭代一个数组怎么写?
  1. for i in 0...arr.size do p arr[i] end
复制代码
实际上我们可以……
  1. for x in arr do p x end
复制代码
实际上这就是……
  1. arr.each { |x| p x }
复制代码
因为维护下标容易产生加一减一问题(算不清左右边界),这里不再赘述

当然,each 也可以引入下标变量,用 each_with_index
  1. arr.each_with_index { |x, i| p [x, i] }
复制代码
这样一来我们就把 for 的需求全消灭了……

点评

这样啊,学到了!  发表于 2019-11-2 16:27
两个点包含头尾,三个点不包含结尾,0...3 就是 0, 1, 2  发表于 2019-11-2 15:39
请教大神,0...3中间正常应该是2个点吧,3个点有什么特殊含义吗?  发表于 2019-11-2 13:23
跟着打了一遍,第一个实例果然是,打印结果i=2也改变了修改外部。  发表于 2019-10-25 13:49
XP的ruby解释器这么睿智吗……  发表于 2019-10-25 09:59

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 cuxia
miantouchi + 1 精品文章

查看全部评分

寒凌天 发表于 2019-10-25 01:44:13
我很负责任的告诉你,追求执行效率那是老手逐渐提高时才需要考虑的事情。对于新手来讲,更推荐你用for循环,因为简单不容易犯错。
至于这两种循环差距到底有多大?如果是你自己写代码的话,估计你把你所有的for循环都换成each do,一整套下来节约的时间可能还不到1毫秒
也就是说把这个时间放大一千倍,可能你都感觉不出来。

新手写的代码,只要不是牵扯长文本拼接以及死循环,一般执行效率不会低的,因为代码太简单了,怎么运行都花不了多少时间。
新手最需要注意的不是去考虑执行效率,而是能达到目的的情况下,尽可能让代码简单化,这样更不容易犯错。

至于老手编写的那些脚本,数据处理越来越大,而且老手技术也是迎刃有余,这时候在区使用each do才是对的,新手完全不需要考虑这些。

点评

别说是新手,老手在刚写完脚本测试的时候也经常出语法错误等问题,如果写的代码自己都陌生,会加大阅读难度,降低工作效率。熟练后再去尝试吧  发表于 2019-10-25 11:45
追求执行效率确实是对的,但是并不适合你现在的阶段。对于新手来说尽量使用那些“一眼就能看出问题出在哪里”的代码。  发表于 2019-10-25 11:44
只是一个方向吧,也不是直达送each后马上都能换for的,毕竟还是for用的顺手了。  发表于 2019-10-25 11:36
ppspssss 发表于 2019-10-24 20:57:57
听說for循環就是each的慢效率版, 我覺得如果这樣没必要新手还是用for好,

点评

哈哈,只是学习,让我全部替换我也没那个水平  发表于 2019-10-25 11:35
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-23 13:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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