2010-07-20 86 views
8

我最近遇到了代碼,看起來像這樣:這是什麼Ruby語法?

next { 
      'foo'   => bar, 
      'foobar'  => anotherbar, 
     } 

起初,它看起來像一個簡單的哈希,但下一個沒有賦值。接下來在這種情況下看起來像一個保留的Ruby關鍵字這段代碼做了什麼?

+0

未來使循環停止當前迭代並跳轉到下一個,但我不知道是什麼的哈希這意味着以後。 – Dani 2010-07-20 03:45:29

+0

你能展示更多代碼嗎? – kiamlaluno 2010-07-20 03:46:48

回答

14

下一個類似於c語言系列中的continue關鍵字,除了在ruby中它使迭代器移動到下一個迭代。由於塊總是有某種返回值,所以你可以選擇將一個作爲參數傳遞給next。

接下來通常用於遍歷文件列表並根據文件名採取行動(或不行)的情況。

下一個可以取一個值,這個值將是塊的當前迭代返回的值。

sizes = [0,1,2,3,4].map do |n| 
    next("big") if n > 2 
    puts "Small number detected!" 
    "small" 
    end 

    p sizes 

Output: 

    Small number detected! 
    Small number detected! 
    Small number detected! 
    ["small", "small", "small", "big", "big"] 

http://ruby-doc.org/docs/keywords/1.9/