什么是def ... else ... end构造?

时间:2014-06-24 17:48:36

标签: ruby

我有这段代码:

def with_else
  puts 'we enter something funny'
  if true
    puts "yes"
    'return YES'
  end
  'return what?'
else
  puts 'no'
  'return else -> no'
end

puts with_else

输出是这样的:

we enter something funny
yes
no
return else -> no 

为什么我没有收到错误? def / else / end的含义是什么?

http://rubyfiddle.com/riddles/8df07

1 个答案:

答案 0 :(得分:12)

这实际上是一个更大的语法结构的一部分:

def foo
  # method stuff
rescue
  # stuff if an exception is caught
else
  # stuff if no exception is caught
ensure
  # always run after rescue and else
end

但每个部分都是可选的!因此,您可以省略rescueensure以获得示例。