Ruby case switch语句,执​​行每个case

时间:2015-05-06 16:11:31

标签: ruby switch-statement

我没有Ruby大师,所以我可以得到一些帮助:我想添加所需的任何代码,以便有一个选项,其中以下case语句将执行每个案例。基本上,如果用户声明了一个浏览器'在命令行命名然后Cucumber selenium测试将针对某个平台/浏览器运行。我想要它,以便如果他们宣布所有',或者如果他们宣布什么都没有(否则),那么每个案件都将被执行。

由于

case ENV['BROWSER']
  when 'safari'
    $browser = Selenium::WebDriver.for :safari
    $browser_name = 'Safari'
  when 'mobile'
    $browser = Selenium::WebDriver.for :chrome
    $browser_name = 'Mobile'
    $browser.manage.window.resize_to(400, 650)
   else
   $browser = Selenium::WebDriver.for :chrome
   $browser_name = 'Chrome'
end

2 个答案:

答案 0 :(得分:3)

如果你需要那种东西, mainInterval = $interval(function() { $scope.doughnutData = []; $http.get('https://api.myjson.com/bins/59zvx').success(function(returnedData) { $scope.username = returnedData.name; $scope.totalscore = returnedData.totalScore.toFixed(3); returnedData.models.forEach(function(x) { var score = x.score.toFixed(3); console.debug(score); if (score >= 75) { $scope.doughnutData.push({ 'value': x.score, 'color': '#F7464A', 'highlight': '#FF5A5E', 'label': x.name }); } else if (score >= 50) { $scope.doughnutData.push({ 'value': x.score, 'color': '#FDB45C', 'highlight': '#FFC870', 'label': x.name }); } else { $scope.doughnutData.push({ 'value': x.score, 'color': '#424242', 'highlight': '#686868', 'label': x.name }); } }); $scope.doughnutData = sortByKey($scope.doughnutData, 'value'); myDoughnut.segments = $scope.doughnutData; myDoughnut.update(); }); }, 5000); 语句只是解决方案的一部分。你也需要迭代。打破一点点不同:

case

此扩展允许您触发零个,一个或多个浏览器,并根据需要设置任意别名。

答案 1 :(得分:0)

然后你不需要开关。 switch语句的目的是不运行所有其他情况(它被设计为独占)。只需使用if语句即可。

实际上有几种方法可以设置if,但如果你想让它看起来像开关一样,这可能是你最好的选择:

if ENV['BROWSER'] == 'safari' || ENV['BROWSER'] == 'all'
  # do safari stuff
end
if ENV['BROWSER'] == 'mobile' || ENV['BROWSER'] == 'all'
  # do mobile stuff
end
if ENV['BROWSER'] == 'chrome' || ENV['BROWSER'] == 'all'
  # do chrome stuff
end