我有完全相同的重复控制结构,不同之处在于内部事物的发生方式。特别是,我不知道如何处理break
,continue
和return
。例如:
int f() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (isFoo(i, j)) {
// doSomethingF1
} else {
// doSomethingF2
}
}
}
}
int g() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (isFoo(i, j)) {
// doSomethingG1
} else {
// doSomethingG2
}
}
}
}
其中doSomething
依赖于i
和j
,并且需要通过break
循环和{{ 1}}退出功能。我该如何排除重复数据?
我曾想过要编写一个以continue
作为参数的函数,但是我不确定如何处理j
,return
或{{ 1}} s。
[我对复制不满意,因为在doSomething
,break
中对continue
和return
进行了一些检查,并像其他四个功能一样完全一样;唯一的区别是几行代码。]
答案 0 :(得分:0)
如果您真的希望/坚持在循环上下文中使用break
,continue
和return
具有相同的内部控制,那么建议的解决方案是宏:-(。
另一方面,如果doSomethingFG12
函数均具有已定义的接口,则补充您的通用控制结构以使用break
,continue
和{{1}处理情况}从那里选择返回值。