查看: 3207|回复: 5

新手問題,for a in b 和b.each {|a|}有甚麽區別?

  [复制链接]

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

发表于 2008-3-11 17:10:33 | 显示全部楼层 |阅读模式

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

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

×
{/hx}那個……
for a in b
end
和
b.each {|a|}
有甚麽區別?
以前看過,但是忘記了。

網上找到這個說明,
補充一下:
11.Earlier we said that the only built-in Ruby looping primitives were while and until. What's this ``for'' thing, then? Well, for is almost a lump of syntactic sugar.

在Ruby中,内置的循环语句只有while和until(具体使用请参考文档).普天下的程序员熟悉的for呢? 在Ruby中,for其实仅仅是一个语法糖而已,使用for循环的时候,Ruby会将for翻译为调用集合对象的each方法,所以,下面两个定义是等同的:
for aSong in songList
  aSong.play
end

songList.each do |aSong|
  aSong.play
end

那麽說,是否意味
for a in b的速度比b.each {|a|}慢?
而消耗的內存比b.each {|a|}?

(如果可以說明一下就最好了。)
版务信息:本贴由楼主自主结贴~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
回帖
1385
发表于 2008-3-11 20:03:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

 楼主| 发表于 2008-3-11 20:55:41 | 显示全部楼层
沒有分別嗎?==a
好像甚麽時候看過一篇評論,說是for語法其實是在調用each語法。使用each語法能够更加快捷的訪問內存,因此儘量使用each語法代替for語法之類的。難道是我多疑?
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
回帖
1385
发表于 2008-3-11 22:19:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
回帖
3667

第1届短篇游戏比赛亚军

发表于 2008-3-12 02:52:28 | 显示全部楼层
http://hi.baidu.com/lingboaa/blo ... 494625b9998f09.html
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
纵然千里外,我等雁归来。
回复

使用道具 举报

酱油的

梦石
0
星屑
1840
在线时间
2161 小时
注册时间
2007-12-22
回帖
3216

贵宾

 楼主| 发表于 2008-3-12 05:59:45 | 显示全部楼层
唔,按照美獸的方法測試了下。
當處理大數據的時候,for a in b明顯弱於b.each {|a|}(比如bigmuns)。
(大概慢上0.5秒左右)
但是處理小數據時,for a 比each{|a|}有微略的優勢。

但總體來說,for比each慢,看來禾西的記憶正確
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部