好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Ruby中Block和迭代器的使用講解

Ruby中Block和迭代器的使用講解

熱門標簽:滴滴外呼系統 百度地圖標注自定義圖片 常德電銷平臺外呼系統軟件價格 高德地圖標注客服 徐州網絡外呼系統哪個好 地圖標注賺錢項目注冊 白銀外呼paas系統 電銷機器人廠商代理 湖州u友防封電銷卡

我們來簡單地描述Ruby的一個獨特特性。Block,一種可以和方法調用相關聯的代碼塊,幾乎就像參數一樣。這是一個不可思議的功能強大的特性。

可以用Block實現回調(但它比Java的匿名內部(anonymous inner)類更簡單),傳遞一組代碼(但它遠比c的函數指針靈活),以及實現迭代器。

Block只是在花括號或者do...end之間的一組代碼。

{puts "Hello"}             #this is a block

do                      ### 

 club.enroll(person)            #and so is this

 person.socialize              #

end                     ###

為什么有兩種分界符?部分原因是有人覺得有時候用一種分界符比另外一種感覺更自然。另外一部分原因是它們有不同的優先級:花括號比do/end綁定的更緊密些。我們嘗試遵循正在成為Ruby標準的一個約定俗成,單行block用花括號,多行block用do/end。

一旦創建了block,就可以與方法的調用相關聯。把block的開始放在含有方法調用的源碼行的結尾處,就可以實現關聯。比如,在下面的代碼中,含有puts "Hi" 的block與greet方法的調用相關聯。

greet {puts "Hi"}

如果方法有參數,它們出現在block之前。

verbose_greet("Dave","loyal customer"){puts "Hi"}

然后使用Ruby的yield語句,方法可以一次或多次地調用(invoke)相關聯的block。可以把yield想象成比如方法調用,它調用含有yield語句的方法所關聯的block。

下面的例子顯示了如何使用yield語句。定義了一個方法,它會調用yield兩次。然后調用這個方法,把block放在同一行,在方法調用之后(并在方法的所有參數之后)。

def call_block

 puts "Start of method"

 yield

 yield

 puts "End of method"

end

call_block{puts "In the block"}

輸出結果:

 Strat of method

 In the block

 In the block

 End of method

可以提供參數給yield的調用;參數會傳遞到block中。在block中,豎線(|)之間給出參數名來接受這些來自yield的參數。

 def call_block

  yield("Hello",99)

 end

 call_block {|str,num| ...}

在Ruby庫中大量使用了block來實現迭代器;迭代器是從某種收集(collection)如數組中連續返回元素的方法。

animals = %w(ant bee cat dog elk)  #創建一個數組

animals.each{|animal| puts animal}  #迭代它的內容

輸出結果:

ant

bee

cat

dog

elk

讓我們看一下如何實現應用在前面例子中的Array類中的each迭代器。each迭代器循環處理數組中的元素,對每個元素調用yield。在偽碼中,它可能寫成:

#在Array類中......

def each

 for each element         #--無效的Ruby語句

  yield(element)

 end

end

許多內建于c和java等語言的循環結構在Ruby中只是方法調用,這些方法會零次或多次地調用相關聯的block。

['cat','dog','horse'].each{|name| print name," "}

5.times {print "*"}

3.upto(6){|i| print i}

('a'..'e').each{|char| print char}

輸出結果:

cat dog horse *****3456abcde

上面的代碼要求對象5 五次調用block;然后要求對象3調用一個block,并傳入一個連續的值,直到這個值到達6為止。最后對a到e的字符區間(range),使用each方法調用block。

您可能感興趣的文章:
  • 舉例講解Ruby中迭代器Iterator的用法
  • 簡要說明Ruby中的迭代器
  • Ruby迭代器的7種技巧分享
  • Ruby中的迭代器詳解
  • js 數組實現一個類似ruby的迭代器
  • ruby 迭代器使用方法
  • Ruby 迭代器知識匯總

標簽:梧州 荊門 公主嶺 永州 張家界 三沙 遼寧 普洱

巨人網絡通訊聲明:本文標題《Ruby中Block和迭代器的使用講解》,本文關鍵詞  Ruby,中,Block,和,迭代,器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby中Block和迭代器的使用講解》相關的同類信息!
  • 本頁收集關于Ruby中Block和迭代器的使用講解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 波多野结衣久久国产精品| 黑人gaysex巨大gay| 成人做爰黄AA片免费播放贝微微| 亚洲男人天堂2021| 去处罚室机器打pg| 日韩精品一区二区三区四区闺蜜 | 白嫩美人的n种调教方式小说| 亚洲????XXXX3d| 扒开末成年粉嫩的小缝图片| 夜色资源站国产www在线视频| 张津瑜厕所门| 国产第二页| 欧美大肚子孕妇做爰| 717电影网午夜福利理伦| 偷妻之寂寞难耐在线播放| 1区1区3区4区产品乱码芒果精品| 日产精品一二三四区国产| 亚洲+变态+欧美+另类+精品| 好大?好爽?再深一点gif小说| 公车上双乳被老汉揉搓玩弄漫画| 男女啪啪抽搐一进一出第一次| 无限看片在线高清| 爆乳一区二区三区爆乳照片| 两个猛男脱裤子摸jiji视频| 欧美综合缴情五月丁香六月婷| 美女aⅴ高清电影在线观看| 日韩欧美中文字幕不卡| 鲤鱼乡太大太满了不要了| 亚洲成色A片在线观看5858| 美女光衣光内衣光内裤光裤子| 中国大陆女rapper潮水| 欧美jav| 冲田杏梨在线播放| 国产在线不卡免费播放 | 欧美性喷潮xxxx| 成人黄网色大免费观看视频 | 制服丝袜人妻综合第1页| 日本公交车黄色片| gog0西西大胆大尺人体高清| YSL水蜜桃色推荐4444| 好男人在线社区 WWW精简版安卓版|