在C和许多其他语言中,有一个continue关键字,当在循环内部使用时,会跳转到循环的下一个迭代.continueRuby中有这个关键字的等价物吗?
我第一次看到这个关键字,我想知道是否有人可以向我解释它的作用.
continue关键字?两个python关键字之间是否有任何显着差异continue,pass如示例中所示
for element in some_list:
if not element:
pass
Run Code Online (Sandbox Code Playgroud)
和
for element in some_list:
if not element:
continue
Run Code Online (Sandbox Code Playgroud)
我应该知道吗?
我想从switch语句的中间跳转到以下代码中的循环语句:
while (something = get_something())
{
switch (something)
{
case A:
case B:
break;
default:
// get another something and try again
continue;
}
// do something for a handled something
do_something();
}
Run Code Online (Sandbox Code Playgroud)
这是一种有效的使用方式continue吗?continue语句是否忽略了switch语句?C和C++在这方面的行为有何不同?
在Douglas Crockford 所着的Javascript:The Good Parts一书中,这是作者对继续声明所说的全部内容:
该
continue声明跳转到循环的顶部.我从未见过一段没有通过重构来删除continue语句而得到改进的代码.
这真让我困惑.我知道Crockford对JavaScript有一些非常自以为是的看法,但这对我来说听起来完全错了.
首先,continue不仅仅是跳到循环的顶部.默认情况下,它也会进入下一次迭代.那么克罗克福德的陈述是不是完全虚假的信息呢?
更重要的是,我并不完全理解为什么continue甚至会被认为是坏事.这篇文章提供了似乎一般的假设:
为什么在循环中继续一个坏主意?
虽然我理解continue在某些情况下如何使代码难以阅读,但我认为它可以使代码更具可读性.例如:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]==='number'){
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这可以重构为:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]!=='number'){
continue;
}
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
Run Code Online (Sandbox Code Playgroud)
continue在这个具体的例子中并不是特别有益,但它确实证明了它减少了嵌套深度的事实.在更复杂的代码中,这可能会提高可读性.
Crockford没有解释为什么continue不应该使用,所以这个意见背后有一些更深层次的意义,我错过了吗?
在这个代码示例中,有没有办法从catch块继续外部循环?
while
{
// outer loop
while
{
// inner loop
try
{
throw;
}
catch
{
// how do I continue on the outer loop from here?
continue;
}
}
}
Run Code Online (Sandbox Code Playgroud) 有人可以通过示例解释循环break 2或continue 2PHP中的含义吗?数字何时break或continue后面是什么意思?
如果不满足某些条件,我试图跳到循环的下一次迭代.问题是循环无论如何都在继续.
我哪里出错了?
更新了代码示例以响应第一条评论.
foreach ($this->routes as $route => $path) {
$continue = 0;
...
// Continue if route and segment count do not match.
if (count($route_segments) != $count) {
$continue = 12;
continue;
}
// Continue if no segment match is found.
for($i=0; $i < $count; $i++) {
if ($route_segments[$i] != $segments[$i] && ! preg_match('/^\x24[0-9]+$/', $route_segments[$i])) {
$continue = 34;
continue;
}
}
echo $continue; die(); // Prints out 34
Run Code Online (Sandbox Code Playgroud) continue ×10
break ×3
java ×2
keyword ×2
loops ×2
php ×2
python ×2
breakpoints ×1
c ×1
c# ×1
c++ ×1
foreach ×1
javascript ×1
readability ×1
ruby ×1
syntax ×1
while-loop ×1