国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ruby系列教材(23):Blocks and Iterators

在前面說過的SongList例子中,我們沒有談到with_title這個method的實現(xiàn),這里要做一下描述:

 

很直觀的一種做法就是,盲目搜索,對所有情況進(jìn)行匹配:

class SongList

  def with_title(title)

    for i in 0...@songs.length                   #0開始,直到小于@songs.length,范圍是[0,@songs.length)

      return @songs[i] if title == @songs[i].name

    end

    return nil

  end

end

 

*在for中,用...(3點),求數(shù)組長度用length,判斷字符串是不是相等用==,這里和java里面不同的是,==不是用來判斷2個class id是不是相當(dāng),for循環(huán)使用end結(jié)束

 

我們可以很明顯的感覺到上面的with_title使用的明顯不是ruby的方式,不夠簡潔,ruby設(shè)計者已經(jīng)考慮到了,array和iterator間的關(guān)系密切,所以為array設(shè)置了一個find這樣的iterator(以前還介紹過Fixnum class里面的times iterator),下面是更加好的實現(xiàn)方式:

class SongList

  def with_title(title)

    @songs.find{|song| song.name == title}

  end

end

 

find這個iterator,return element,如果沒有要查找的element,就return nil,yield帶有一個parameter,表示array里面的elements。

不要從語法上學(xué)習(xí)ruby,這個是很重要的,因為ruby設(shè)計者希望ruby能夠更加自然,更加接近人,所以,這里理解find,是這樣:

find{|element| condition}   #element會從0到最后一個element,condition包含了判斷這個element是否合理,假如conditon成立,返回element,否則繼續(xù),直到element被遍歷完成,返回nil

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ruby Test:unit 常用斷言
Overview of the Prototype Javascript Library
AXIS2中OMElement和Java對象之間的轉(zhuǎn)換 分享
TensorFlow全新的數(shù)據(jù)讀取方式:Dataset API入門教程
快速讀懂Ruby代碼問答
dom4j解析xml字符串實例
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服