缩短Ruby中的if-else结构

3 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
Run Code Online (Sandbox Code Playgroud)

Mic*_*ary 7

您可以通过几种不同的方式简化此操作,例如:

med_name = params[:medication_name]
med_name = 'all' if med_name.nil? or med_name == 'undefined'
Run Code Online (Sandbox Code Playgroud)


Mar*_*eed 4

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

med_name = params[:medication_name] 
med_name = 'all' if [nil, 'undefined'].include? med_name
Run Code Online (Sandbox Code Playgroud)

对于更一般的长链if// ,请查看语句。在这种情况下,他们太过分了,但这里有一个例子:elsifelsecase

med_name = case params[:med_name]
   when 'undefined', nil 
     'all'
   else
      params[:med_name]
end
Run Code Online (Sandbox Code Playgroud)