确定选择哪个值

时间:2018-11-20 03:31:18

标签: ruby algorithm logic

我有三个数值变量:on_the_grounddouble_round_trippoint_to_pointprice函数根据一些简单的逻辑返回其中之一。

下面是当前的工作方式。

def price
  return on_the_ground if date_range == 1

  values = [
    on_the_ground,
    double_round_trip
  ]

  if !turbo? && !vlj?
    values.push(point_to_point)
  end

  values.compact.min
end

我想要一个可以根据应返回的值返回符号的函数。例如:

def price_name
  return :on_the_ground if date_range == 1
  ... etc...
end

3 个答案:

答案 0 :(得分:0)

如果我明白你的意思,为什么不使用数组?

def price_name_for date_range
  [:on_the_ground, :double_round_trip, :point_to_point][date_range-1]
end

price_name_for 1 #=> :on_the_ground
price_name_for 2 #=> :double_round_trip
price_name_for 3 #=> :point_to_point

答案 1 :(得分:-1)

您可以使用大小写

case values
  when double_round_trip
    return :double_round_trip
  when on_the_ground 
...

https://www.rubyguides.com/2015/10/ruby-case/

答案 2 :(得分:-1)

我最终使用:

price_options.key(price) # double_round_trip