开发者

What is this Ruby syntax?

I recently ran into code that looks like this:

 next {
          'foo'         => bar,
          'foobar'      =&开发者_StackOverflow中文版gt; anotherbar,
      }

At first it looks like a simple hash, but there is no assignment to next. Next in this case looks like a reserved Ruby keyword. What does this code do?


next is similar to the continue keyword in the c family of languages, except in ruby it makes an iterator move to the next iteration. Since blocks always have some sort of return value you can choose to pass one as an argument to next.

next is typically used in cases like iterating through a list of files and taking action (or not) depending on the filename.

next can take a value, which will be the value returned for the current iteration of the block.

  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"]

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜