替代if-then-else或case语句

时间:2019-01-11 15:04:54

标签: ruby string if-statement search

我正在从字符串中解析关键字,想知道是否存在除大量if-then-else语句或使用switch语句以外的其他方法。任何方向都会有帮助

application = application.downcase
if(application.include?("ssl"))
     return "SSL"
elsif(application.include?("ssh"))
     return "SSH"
elsif(application.include?("dce"))
     return "DCE"
elsif(application.include?("https"))
     return "HTTPS"
elsif(application.include?("http"))
     return "http"
else
     return "nil"

2 个答案:

答案 0 :(得分:2)

这是一种方式

def your_method(application)
  application = application.downcase
  %w(ssl ssh dce https).each do |p|
    return p.upcase if application.include?(p)
  end
  application.include?("http") ? "http" : "nil"
end

答案 1 :(得分:0)

这是一个略短的方法

%w[SSL SSH DCE HTTPS http].each do |p|
  return p if application =~ /#{p}/i
end
"nil"

这可能是最短的

%w[SSL SSH DCE HTTPS http].find { |p| application =~ /#{p}/i } || "nil"

除非您选择较短的变量名

app.upcase[/SSL|SSH|DCE|HTTPS/] || (app =~ /http/i ? "http" : "nil")
相关问题