Project1
标题:
谁能总结下each的使用。
[打印本页]
作者:
miantouchi
时间:
2019-10-24 20:54
标题:
谁能总结下each的使用。
论坛里面都说for in 不好用each do 代替
大家是所有的地方都用each吗?
我查了下F1,我了去each怎么这么多地方都有
each.png
(4.7 KB, 下载次数: 13)
下载附件
保存到相册
2019-10-24 20:53 上传
作者:
ppspssss
时间:
2019-10-24 20:57
听說for循環就是each的慢效率版, 我覺得如果这樣没必要新手还是用for好,
作者:
寒凌天
时间:
2019-10-25 01:44
我很负责任的告诉你,追求执行效率那是老手逐渐提高时才需要考虑的事情。对于新手来讲,更推荐你用for循环,因为简单不容易犯错。
至于这两种循环差距到底有多大?如果是你自己写代码的话,估计你把你所有的for循环都换成each do,一整套下来节约的时间可能还不到1毫秒
也就是说把这个时间放大一千倍,可能你都感觉不出来。
新手写的代码,只要不是牵扯长文本拼接以及死循环,一般执行效率不会低的,因为代码太简单了,怎么运行都花不了多少时间。
新手最需要注意的不是去考虑执行效率,而是能达到目的的情况下,尽可能让代码简单化,这样更不容易犯错。
至于老手编写的那些脚本,数据处理越来越大,而且老手技术也是迎刃有余,这时候在区使用each do才是对的,新手完全不需要考虑这些。
作者:
hyrious
时间:
2019-10-25 06:59
就 RMXP 来说 for 和 each 还真是一回事……
我们推荐用 each 主要有两点
1. 隐藏迭代变量(RMVA 起)
i = 42
for i in 0...3 do p i end
p i #=> 2
复制代码
这里外部的 i 被 for 里的 i 改变了,写代码更容易出 bug
i = 42
(0...3).each { |i| p i }
p i #=> 42
复制代码
注意,这个特性 RMVA 里才有效,RMXP 里仍会修改外部 i
2. 隐藏不必要的迭代下标
迭代一个数组怎么写?
for i in 0...arr.size do p arr[i] end
复制代码
实际上我们可以……
for x in arr do p x end
复制代码
实际上这就是……
arr.each { |x| p x }
复制代码
因为维护下标容易产生加一减一问题(算不清左右边界),这里不再赘述
当然,each 也可以引入下标变量,用 each_with_index
arr.each_with_index { |x, i| p [x, i] }
复制代码
这样一来我们就把 for 的需求全消灭了……
作者:
soulsaga
时间:
2019-10-25 13:15
我想问下..
用FOR怎么无限循环?
作者:
warback
时间:
2019-11-7 10:37
学到了!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1