欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

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

在前面說(shuō)過(guò)的SongList例子中,我們沒(méi)有談到with_title這個(gè)method的實(shí)現,這里要做一下描述:

 

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

class SongList

  def with_title(title)

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

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

    end

    return nil

  end

end

 

*在for中,用...(3點(diǎn)),求數組長(cháng)度用length,判斷字符串是不是相等用==,這里和java里面不同的是,==不是用來(lái)判斷2個(gè)class id是不是相當,for循環(huán)使用end結束

 

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

class SongList

  def with_title(title)

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

  end

end

 

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

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

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

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久