当程序中发生意外异常时(在调试器中).有时你只想跳过它,因为在那个时候杀死程序比继续更有害.或者你只是想继续,因为你对另一个错误/错误更感兴趣
是否有选项/ compilerflag/secretswitch来启用它?
我理解异常应该马上解决,但是有些情况(比如我所描述),其中只是想暂时跳过它
我试图绕着Elisp的cl循环设施,但似乎无法找到跳过元素的方法.这是一个人为的例子来说明这个问题:我想循环一个整数列表并得到一个新的列表,其中原始列表中的所有奇数整数都是平方的.偶数整数应该省略.
根据cl-loop的文档,我应该能够这样做:
(loop for i in '(1 2 3)
if (evenp i)
append (list)
else
for x = (* x x)
and append (list x))
Run Code Online (Sandbox Code Playgroud)
我想要的输出是'(1 9)一个错误:
cl--parse-loop-clause: Expected a `for' preposition, found (list x)
Run Code Online (Sandbox Code Playgroud)
显然这and不符合预期,但我不明白为什么.(我知道我可以简化else块只包含一个子句,这样and就不再需要了.但是,我对你真正需要连接几个子句的情况感兴趣and.)
问题的第二部分:理想情况下,我可以这样写:
(loop for i in '(1 2 3)
if (evenp i)
continue
for x = (* x x)
append (list x))
Run Code Online (Sandbox Code Playgroud)
继续是跳过其他语言迭代的一种非常常见的方法.为什么cl-loop没有continue运算符?是否有一种简单的方法可以跳过我忽略的元素(比我在第一个例子中尝试的更简单)?
是否可以在 kotlin 循环中继续 n 次?
for(i in 0..n){
doSomething()
if(condition){
//manipulate n
}
}
Run Code Online (Sandbox Code Playgroud)
由于i出于某种原因是一个 val 我似乎无法在循环中重新初始化它。
我得到了一个neighbor数组(由 Tile 对象组成),它的长度始终为 4,无论是否填充了所有元素。如果该元素/位置不为空,我想扫描该数组并更改 Tile 中包含的 PB 的颜色。我可以if neighbors[i] = null使用以下代码通过标准检查来做到这一点:
for (int i = 0; i < Neighbors.Count(); i++)
{
if (Neighbors[i] != null)
Neighbors[i].TilePB.Backcolor = Color.Red;
else
continue; // just put that here for some more context.
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否可以在一行中完成此操作,类似于使用 ? 操作员。我试过使用三元运算符,但我不能continue使用一个(我尝试过的三元语句:Neighbors[i] != null ? /* do something */ : continue,为什么它不起作用的来源:为什么 break 不能与三元运算符一起使用?)。
是否有另一种方法来检查数组的元素是否为空,只使用一行(最好不使用 hack)?
我刚开始学习Perl脚本语言并且有一个问题.
在Perl中,continue阻塞使用while和do while循环的逻辑原因是什么,而不是for循环?
我不明白为什么继续导致错误在这里
public void clear() {
log.debug("Clearing hash");
// wow!
while( hash.size()>0 ) {
for(Map.Entry<Node,Node> entry : hash.entrySet()) {
clearingParents: {
while( entry.getKey().ups.size() > 0 ) {
for(Node node : entry.getKey().ups) {
log.debug("Clearing {}, hash size is {}", node, hash.size());
if( node.sizeUps() == 0 ) {
node.clear();
continue clearingParents;
}
else {
log.debug("was skipped since inserted");
}
}
break clearingParents;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用这个方案,因为node.clear()导致迭代器出现故障
我是python初学者,没有以前的编程知识.我为这个话题的名字道歉,但我根本无法做出更好的话题.这就是我想要的:
letter = "w" # search for this letter in the list bellow
listL = ["z","b","y","a","c"]
for let in listL:
if let == letter:
print "found it"
break
else:
if let == listL[-1]:
print "nope can't find it"
continue
Run Code Online (Sandbox Code Playgroud)
我有一个字母列表,我想在该列表中搜索特定的字母.如果我找到了这封信,那么一切都很好,for循环应该停止.如果我没有找到它,我希望循环停止当前迭代,并尝试使用列表中的下一个字母.如果列表中的单个字母没有该特定字母,那么它应该打印"nope找不到它".
上面的代码工作.但我想知道这是否可以写得有点清楚?显然,我并不是指"先进",而是学者的方式,一种来自书本的方式.
谢谢.
我正在编写一个代码,它将遍历直方图中的每个bin,并检查是否存在任何非零bin.如果有,它会抛出一条错误消息.我的问题是,我希望它跳过一个bin,因为这个bin不应该是空的,而是检查所有其他的bin.
唯一的问题是创造一个无限循环.这是我的代码
Int_t y;
for (int i = 0; i <= 100; i++) {
y = hist - > GetBinContent(i)
if (i = 1) continue;
else if (y != 0) {
std: cout << * * * * * ERROR * * * * * << std: endl;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
它正在发生的事情是评估它i = 0,跳过i = 1,然后命中,i = 2并且不断地一遍又一遍地评估它.如果我拿出"if(i = 1)继续;" 然后它的工作原理.
有任何想法吗?
在下面的代码中,请查看具有"continue"语句的部分.如果我删除'continue'语句并且我没有放任何代替它会有什么不同.
int prime_or_not(int x){
int i;
if (x == 1 || x == 2){
return 1;
}else if (x % 2 == 0){
return 0;
}else if (x > 2){
for (i = 3; i < x; i += 2){
if (x % i == 0){
return 0;
break;
}else {
continue;
}
}
return 1;
}else {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud) 例如:使用此块的缺点/优点是什么:
for(int i = 0; i < 10; i++)
{
if(i < 9){}
else Console.Writeline(i);
}
Run Code Online (Sandbox Code Playgroud)
与此块相反:
for(int i = 0; i < 10; i++)
{
if(i < 9)
{
continue;
}
Console.Writeline(i);
}
Run Code Online (Sandbox Code Playgroud)
考虑到他们的输出是完全一样的.