编写简洁的多个else/if语句

har*_*hit 2 ruby

我有以下代码,

@checkedin=[]
@accepted=[]
@rejected=[]   
result.each do |parse_order|
  orderId = parse_order['orderID']
    if parse_order['status'] == -1
        @rejected << orderId
    elsif parse_order['status'] == 1
        @accepted << [orderId, parse_order['createdAt']]
    elsif parse_order['status'] == 2
       @checkedin << [orderId, parse_order['createdAt']]
    elsif parse_order['status'] == 3
        next       
   end   
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来简洁它.谢谢.

Aug*_*ust 5

您可以使用单行条件.此外,next在块结束时是不必要的.

@checkedin = []
@accepted  = []
@rejected  = []   

result.each do |parse_order|
  orderId = parse_order['orderID']
  status = parse_order['status']

  @rejected  << orderId if status == -1
  @accepted  << [orderId, parse_order['createdAt']] if status == 1
  @checkedin << [orderId, parse_order['createdAt']] if status == 2
end
Run Code Online (Sandbox Code Playgroud)