2010-07-20 100 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/