亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

靈活編碼手段Ruby blocks如何理解

發布時間:2022-01-11 15:36:10 來源:億速云 閱讀:128 作者:柒染 欄目:編程語言

今天給大家介紹一下靈活編碼手段Ruby blocks如何理解。文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。

Ruby語言的出現,改變了程序員傳統的編寫誒代碼方式,使編程人員在編寫代碼時會有一種非常愉悅的心情。在這里我們為大家介紹一種靈活編碼手段Ruby blocks。

先來看一下這段代碼:

  1. class SongList  

  2. def [](key)  

  3. return @songs[key] if 
    key.kind_of?(Integer)  

  4. return @songs.find { 
    |aSong| aSong.name == key }  

  5. end  

  6. end 

在第四行中,有find這樣一個方法,可以按照指定條件對songs進行遍歷,最終返回一個符合條件的個體。

下面就來看看這個方法到底是怎么實現的。

class Array   def find   for i in 0size   value = self[i]   return value if yield(value)   end   return nil   end   end

發現是在Array這個類中,增加了一個method,在method中嵌入了一個遍歷操作。如果只是這樣的話,那么ruby和其他語言也就沒有什么差別了,我們注意到第5行中有yield,這么一個東東。其實他起到了一個代理的作用,實現了實際操作部分和遍歷的分離。

再看看下面這個例子,來了解一下yield的功能。

1def threeTimes  yield  yield  yield  end  threeTimes { puts "Hello" }

這里定義了名叫threeTimes的blocks, Ruby blocks中會重復3次外部的操作,當row 6的代碼執行后,會得到后面的結果:
Hello
Hello
Hello

可以看到blocks為我們提供了如此靈活的手段,其實他語言中需要通過代理或接口或函數指針來實現。
其實.net 3.x以后的版本也提供了類似的功能,一個叫LINQ(Language Integrated Query )的東東。
可以使用類似SQL的方式過濾集合

  1. LINQ Query:  

  2. string[] names = { "Geoff", 
    "Jessica", "Mike", "Megan",  

  3. "Priscilla", "Jack", "Alma" };  

  4. IEnumerable<string> expr = 
    from s in names  

  5. where s.Length == 5  

  6. orderby s  

  7. select s.ToUpper();  

  8. foreach (string item in expr)  

  9. Console.WriteLine(item); 

上面的用法是不是很簡潔方便?用ruby來實現的話,將會是這樣:

  1. names = [ "Geoff", "Jessica", 
    "Mike", "Megan", "Priscilla",  

  2. "Jack", "Alma" ]   

  3. expr = names.select {  

  4. |n| n.length == 5  

  5. }.sort.collect { |n| n.upcase }  

  6. expr.each {|n| puts n } 

正因為Ruby blocks如此方便,在閱讀ruby程序的時候,可以看到被廣泛的使用著。

以上就是靈活編碼手段Ruby blocks如何理解的全部內容了,更多與靈活編碼手段Ruby blocks如何理解相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

木兰县| 平遥县| 武平县| 溧水县| 漯河市| 湘潭县| 望江县| 静乐县| 库伦旗| 布尔津县| 册亨县| 勃利县| 交口县| 廉江市| 宜昌市| 巴楚县| 威海市| 宁强县| 建宁县| 通渭县| 沙河市| 永新县| 大竹县| 镶黄旗| 鄱阳县| 嵊泗县| 唐海县| 黑龙江省| 崇阳县| 敦煌市| 左云县| 温州市| 县级市| 洛扎县| 安陆市| 和龙市| 拉萨市| 诸城市| 遵义县| 雷州市| 太谷县|