Determining if a variable is within range?

后端 未结 9 950
自闭症患者
自闭症患者 2020-12-12 12:02

I need to write a loop that does something like:

if i (1..10)
  do thing 1
elsif i (11..20)
  do thing 2
elsif i (21..30)
  do thing 3
etc...
9条回答
  •  春和景丽
    2020-12-12 13:02

    A more dynamic answer, which can be built in Ruby:

    def select_f_from(collection, point) 
      collection.each do |cutoff, f|
        if point <= cutoff
          return f
        end
      end
      return nil
    end
    
    def foo(x)
      collection = [ [ 0, nil ],
                     [ 10, lambda { puts "doing thing 1"} ],
                     [ 20, lambda { puts "doing thing 2"} ],
                     [ 30, lambda { puts "doing thing 3"} ],
                     [ 40, nil ] ]
    
      f = select_f_from(collection, x)
      f.call if f
    end
    

    So, in this case, the "ranges" are really just fenced in with nils in order to catch the boundary conditions.

提交回复
热议问题