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

hal*_*bit 4 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
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

we enter something funny
yes
no
return else -> no 
Run Code Online (Sandbox Code Playgroud)

为什么我没有收到错误?什么def/ else/ end是什么意思?

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

Max*_*Max 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
Run Code Online (Sandbox Code Playgroud)

但每个部分都是可选的!所以你可以省略rescueensure得到你的榜样.