3

このようなコードのショートカットはありますか?

def test
  obj = get_from_somewhere()
  if obj
    true
  else
    false
  end
end

Python では、次のようにできます。

return True if obj else False
4

3 に答える 3

10

これを実現する一般的な Ruby のイディオムは次のとおりです。

def test
  !!get_from_somewhere
end

ダブルバンは、オブジェクト「ブール値の同等物」に変換します。

object = 'foo'
!object
# => false
!!object
# => true

Python とは異なり、Ruby ではブール値のコンテキストで単にfalseandnilが false と評価されることに注意してください。次に例を示します。

!!0
# => true
于 2013-09-20T10:58:53.673 に答える