Project1

标题: 新手問題,for a in b 和b.each {|a|}有甚麽區別? [打印本页]

作者: 禾西    时间: 2008-3-11 17:10
标题: 新手問題,for a in b 和b.each {|a|}有甚麽區別?
{/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|}?

(如果可以說明一下就最好了。) [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: wy29    时间: 2008-3-11 20:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2008-3-11 20:55
沒有分別嗎?==a
好像甚麽時候看過一篇評論,說是for語法其實是在調用each語法。使用each語法能够更加快捷的訪問內存,因此儘量使用each語法代替for語法之類的。難道是我多疑?
作者: wy29    时间: 2008-3-11 22:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 美兽    时间: 2008-3-12 02:52
http://hi.baidu.com/lingboaa/blo ... 494625b9998f09.html [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 禾西    时间: 2008-3-12 05:59
唔,按照美獸的方法測試了下。
當處理大數據的時候,for a in b明顯弱於b.each {|a|}(比如bigmuns)。
(大概慢上0.5秒左右)
但是處理小數據時,for a 比each{|a|}有微略的優勢。

但總體來說,for比each慢,看來禾西的記憶正確




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1