Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby if-then-else或case语句的替代方案_Ruby_String_If Statement_Search - Fatal编程技术网

Ruby if-then-else或case语句的替代方案

Ruby if-then-else或case语句的替代方案,ruby,string,if-statement,search,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")) retu

我正在解析字符串中的关键字,想知道除了大量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"
这是一种方式

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
这是一种方式

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

这是一条稍微短一点的路

%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")

这是一条稍微短一点的路

%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")

如果是
应用程序,您会返回什么?包括?(“https”)
?检查它是否在数组中,是否在upcase it和特殊情况下的http中。然后找出它的不同之处,并使其不必如此。如果是
应用程序,您会返回什么。包括?(“https”)
?检查它是否在数组中,是否在upcase it和特殊情况下的http中。然后找出它的不同之处,让它不必如此。