我看到一些java代码以更清晰的方式退出,如此代码所示。
if(a!=1) {System.exit();}
//If equal 1, execute the code below
ActionScript是否有类似的关键字来停止某个函数(不退出循环或应用程序)作为break
关键字的替代?
private function isInt():void {
if(a!=1) { /* stop executing the code after these */ }
b=a;
}
答案 0 :(得分:2)
您引用的Java代码退出整个过程 - 它停止执行。 Flash在主机进程内运行,例如Web浏览器,不应该被任意关闭 - 如果用户在其他选项卡上有内容怎么办?
如果您特别想要向托管浏览器发送信号,则应使用fscommand或更新的机制,并让浏览器/网页决定如何操作。
如果您只是想阻止执行您的功能,只需使用'return;'离开你所在的功能而不再进行任何处理。
答案 1 :(得分:1)
使用条件返回语句起初可能看起来干净漂亮,但在重构时可能会成为一个问题,因为它没有明确显示其意图。
你想说的是:
if my conditions are met, execute the next statement.
但你所说的是:
if my conditions are not met, get out of here.
示例#1
假设你有一个带有两个或三个嵌套if语句的复杂方法:
function myComplexMethod ( param1 : int, param2 : int, param3 : String ) : String {
var ret:String = null;
if (param3 != null) {
ret = param3;
if (param2 != 0) {
ret += param2;
if (param3 != 0) {
ret += param1 + param2;
}
}
}
return ret;
}
示例#2
当然,使用条件返回语句,相同的方法会更好看:
function myComplexMethod ( param1 : int, param2: int, param3:String ) : String {
if (!param3) return null;
var ret : String = null;
ret += param3;
if (param2 == 0) return ret;
ret += param2;
if (param1 == 0) return ret;
ret += param1 + param2;
return ret;
}
但乍一看,你能真正说出这种方法的输出是什么吗?
示例#3
如果您要真正清理代码怎么办?如果重构代码以反映每个块的意图,复杂的方法将成为一个简单的方法:
function mySimpleMethod ( param1 : int, param2: int, param3:String ) : String {
return param3 != null ?
outputOfAllParams (param1, param2, param3 ) : null;
}
function outputOfAllParams ( param1 : int, param2: int, param3:String ) : String {
return param2 != 0 ?
param3 + combinedOutputOfIntParams ( param1, param2 ) : param3;
}
function combinedOutputOfIntParams ( param1 : int, param2: int ) : String {
return param1 != 0 ?
param2 + "" + sumOfIntParams( param1, param2) : "" + param2;
}
function sumOfIntParams( param1 : int, param2: int ) : int {
return param1 + param2;
}
在最后一个示例中,代码易于阅读,您只需查看它就可以看到应该执行的操作。
问题是:您可以轻松地使用重构从示例#1到示例#3 - 很明显,每个条件块都将被重构为新方法。使用条件返回语句,它更不直观:您必须非常仔细地检查,所需代码块的结束位置以及何时返回。
当然,如果你正在处理这样的简单任务,那么好处并不明显,但如果你有真正的生产代码,你肯定希望 intent 尽可能明显,并且即使您在几个月内回到自己的代码中,如果您使用示例#2,也需要花费更长的时间来理解它应该做什么。