Ruby中的其他结构

我写过类似这样的东西,这是我从Visual Basic 6.0知道的同样的if-else逻辑,但是我确信有更好的写它的“Ruby方法”。

你能告诉我它在Ruby世界中的样子吗?

  if params[:medication_name].nil?
    med_name = 'all'
  elsif params[:medication_name] == 'undefined'
    med_name = 'all'
  else
    med_name = params[:medication_name]
  end

对于你的情况,这样的事情:

med_name = params[:medication_name] 
med_name = 'all' if [nil, 'undefined'].include? med_name

对于更常见的if / elsif / else长链,请查看case语句。 在这种情况下,它们过度杀伤,但这里有一个例子:

med_name = case params[:med_name]
   when 'undefined', nil 
     'all'
   else
      params[:med_name]
end

有几种不同的方法可以简化这一点,例如:

med_name = params[:medication_name]
med_name = 'all' if med_name.nil? or med_name == 'undefined'

Ruby独有:

med_name = {nil=>'all', 'undefined'=>'all'}[params[:medication_name]] || params[:medication_name]
链接地址: http://www.djcxy.com/p/25643.html

上一篇: else structure in Ruby

下一篇: C# Putting a quotation mark within quotation marks?