is there a ruby one-line “return if x”?

后端 未结 4 1377
有刺的猬
有刺的猬 2021-02-06 22:08

have a ton of places I need to add

if this_flag
  return
end

can that be done on one line with ruby?

相关标签:
4条回答
  • 2021-02-06 22:39

    Ruby always returns the last thing... Why not just structure your code differently?

    def returner(test)    
      "success" if test   
    end
    

    Whatever you've done last will return. I love Ruby.

    0 讨论(0)
  • 2021-02-06 22:45

    is there a ruby one-line “return if x” ?

    Yes:

    return if x
    

    I love Ruby :-)

    0 讨论(0)
  • 2021-02-06 22:57

    Create a method that check for the expected class types Example below. Method check_class will return true as soon as it finds the correct class. Useful if you may need to expand the number of different class types for any reason.

    def check_class(x)
      return true if is_string(x) 
      return true if is_integer(x)
      # etc etc for possible class types
      return false # Otherwise return false
    end
    
    def is_string(y)
      y.is_a? String
    end
    
    def is_integer(z)
      z.is_a? Integer
    end
    
    
    a = "string"
    puts "#{check_class(a)}"
    
    0 讨论(0)
  • 2021-02-06 22:59

    Some additions to Jörg W Mittag's good answer:

    x && return
    x and return
    if x then return end
    

    I do not actually recommend the first two forms: however, the above examples are all valid productions. I personally prefer to avoid return in general -- most grammar constructs in Ruby are usable expressions.

    Happy coding.

    0 讨论(0)
提交回复
热议问题