Альтернатива операторам if-then-else или case - PullRequest
0 голосов
/ 11 января 2019

Я анализирую ключевые слова из строки и задаюсь вопросом, есть ли альтернативный метод, кроме массивных операторов 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 голосов
/ 12 января 2019

Это немного короче

%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")
0 голосов
/ 11 января 2019

Это способ

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...