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

Project1

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

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

 关闭 [复制链接]

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

跳转到指定楼层
1
发表于 2008-3-11 17:10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
{/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|}?

(如果可以說明一下就最好了。)
版务信息:本贴由楼主自主结贴~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
帖子
1423
2
发表于 2008-3-11 20:03:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

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

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-2-18
帖子
1423
4
发表于 2008-3-11 22:19:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

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

第1届短篇游戏比赛亚军

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

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1035
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

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

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 19:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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