【问题标题】:Spaceship operator and conditional statements宇宙飞船运算符和条件语句
【发布时间】:2014-12-13 13:26:03
【问题描述】:

快速提问。有没有更优雅的方式来写这样的东西?

result = a <=> b

if result == 1
  # do something
elsif result == 0
  # do something else
else
  # do something else
end

【问题讨论】:

    标签: ruby conditional-statements spaceship-operator


    【解决方案1】:

    您可以使用case statement:

    case a <=> b
      when 1
        # do something
      when 0
        # do something else
      when -1
        # do something else
      else
        # return / catch error
    end
    

    对于简单的单行,您也可以使用 then 缩短它

    case a <=> b
      when 1 then x = "foo"
      when 0 then y = "bar"
      when -1 then z = "foobar"
      else # return / catch error
    end
    

    【讨论】:

      【解决方案2】:

      我不知道这是否更优雅,但肯定更直接:

      case
      when a < b
        # do A
      when a > b
        # do B
      else
        # do C
      end
      

      【讨论】:

        猜你喜欢
        • 2011-03-04
        • 2010-10-24
        • 2021-08-07
        • 2021-07-27
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多