为什么Ruby中没有`elsunless`语句?

Lar*_*off 2 ruby language-design conditional-statements

Ruby提供unlesselsif声明.似乎很自然地假设会有类似的elsunless陈述,但没有.这有什么特别的原因吗?

为了说明,这个语句允许这样的代码.

unless broken
  # do something
elsunless done
  # do something else
end
Run Code Online (Sandbox Code Playgroud)

我知道,这个代码可以被改写为使用ifelsif,但在使用某些情况下,unless更清晰.

dav*_*son 5

if/ else语句背后的逻辑通常是:

有一个例外:

if exception_a
  # do exception stuff
else
  # do standard stuff
end

unless exception_a
  # do standard stuff
else
  # do exception stuff
end
Run Code Online (Sandbox Code Playgroud)

unless在这种情况下添加可能非常有用,因为您可以切换代码.我也喜欢的unless是,您可以在检查异常时单独执行标准操作.(该else块可以省略)

有多个例外:

这是棘手的部分:

if exception_a
  # do exception stuff a
elsif exception_b
  # do exception stuff b
else
  # do standard stuff
end

unless exception_a
  # do standard stuff
elsunless exception_b
  # do ???
else
  # do exception stuff
end
Run Code Online (Sandbox Code Playgroud)

除了完全不可读之外,我找不到该elsunless块的逻辑含义:你会在那里放什么代码?我仍然不知道这是不是一些例外的东西或标准代码.

也许您可以进一步解释在这样的块中使用的代码.