哪个更好,最快的方法是:如果还是切换? if(x==1){ echo "hi"; } else if (x==2){ echo "bye"; } switch(x){ case 1 … break; default; }
通常我需要根据非POD常量元素的值来select做什么,如下所示: switch( str ) { case "foo": … case "bar": … default: … } 可悲的switch只能用于整数: error: switch quantity not an integer 。 实现这种事情的最微不足道的方法就是一系列if s: if( str == "foo" ) … else if( str == "bar" ) … else … 但是这个解决scheme看起来很脏,并且应该花费O(n),其中n是个案数量,而那个代码在二进制search的情况下可能在最坏的情况下花费O(log n)。 使用一些数据结构(如地图),可以获得一个表示string(O(log n))的整数,然后使用O(1) switch ,或者可以通过嵌套实现静态二进制sorting, if s in正确的方式,但这些黑客仍然需要大量的编码,使一切变得更加复杂和难以维护。 什么是最好的方法来做到这一点? (快速,干净和简单,因为switch语句是)
在Eclipse中给定的Java Enum中围绕“自动构build”开关的情况有没有类似CTRL +的空间方式? 我想要一个所有枚举情况的存根…
我知道我可以写一个Ruby case语句来检查正则expression式的匹配。 但是,我想在我的return语句中使用匹配数据。 像这样的半伪代码: foo = "10/10/2011" case foo when /^([0-9][0-9])/ print "the month is #{match[1]}" else print "something else" end 我怎样才能做到这一点? 谢谢! 只是一个说明:我明白,我不会像以上那样使用switch语句来处理一个简单的情况,但这只是一个例子。 实际上,我想要实现的是为许多潜在的正则expression式匹配一个可以用各种方式编写的date,然后相应地用Ruby的Date类进行parsing。
考虑下面的两个代码片段,用大括号表示: switch (var) { case FOO: { x = x + 1; break; } case BAR: { y = y + 1; break; } } 没有牙套: switch (var) { case FOO: x = x + 1; break; case BAR: y = y + 1; break; } 我知道,在带有大括号的片段中,通过将每个大括号括起来创build一个新的作用域。 但是,如果每个案例都不需要新的范围(即没有variables名称被重用),那么在使用大括号的情况下会有什么样的性能损失?
我很熟悉Swift中的switch语句,但是想知道如何用switch来代替这段代码: if someVar < 0 { // do something } else if someVar == 0 { // do something else } else if someVar > 0 { // etc }
有没有办法在less数几行上写这个,但仍然易于阅读? var month = ''; switch(mm) { case '1': month = 'January'; break; case '2': month = 'February'; break; case '3': month = 'March'; break; case '4': month = 'April'; break; case '5': month = 'May'; break; case '6': month = 'June'; break; case '7': month = 'July'; break; case '8': month = 'August'; break; […]
在Swift中,你可以使用'is'来检查一个对象的类的types。 我怎样才能把它合并到一个“开关”块? 我认为这是不可能的,所以我想知道什么是最好的方法。 TIA,Peter。
如何为以下条件写一个swtich? 如果url 包含 “foo”,那么settings.base_url是“bar”。 以下是达到所需的效果,但我有一种感觉,这将是一个开关更易于pipe理: var doc_location = document.location.href; var url_strip = new RegExp("http:\/\/.*\/"); var base_url = url_strip.exec(doc_location) var base_url_string = base_url[0]; //BASE URL CASES // LOCAL if (base_url_string.indexOf('xxx.local') > -1) { settings = { "base_url" : "http://xxx.local/" }; } // DEV if (base_url_string.indexOf('xxx.dev.yyy.com') > -1) { settings = { "base_url" : "http://xxx.dev.yyy.com/xxx/" }; }
我可以描述我正在寻找的最好的方法是向您展示迄今为止我尝试过的失败的代码: case car when ['honda', 'acura'].include?(car) # code when 'toyota' || 'lexus' # code end when大约50种不同的可能的car价值应该触发的情况下,我已经有了大约4或5种不同的情况。 有没有办法做到这一点的case或者我应该尝试一个巨大的, if块?