如果我声明这样的函数:
public function foo():void
{
// do something
}
有时在该功能中,我可能会决定提前退出,通常带有日志消息,如下所示:
public function foo():void
{
if( somethingWentWrong )
{
log( "blah blah" );
return;
}
// do something
}
wherelog()
本质上是trace()
带有签名的包装器public function log( msg:String ):void
为了节省一点空间,我可能会重写该检查并提前为此:
public function foo():void
{
if( somethingWentWrong )
return log( "blah blah" );
// do something
}
这在 99% 的情况下编译和运行都没有问题,除了偶尔(当项目的另一个不相关部分存在错误,或者我进行清理时),我会收到以下形式的编译错误:
"Error: Return value must be undefined"
而且我需要以长格式重新编写它才能编译。编译完成后,我可以将其返回到其简短版本,一切都会再次变得愉快。
然而,当这个错误发生时,它很烦人,我不喜欢在引入 3 行冗余时重写代码。关于它为什么会发生(并且只是偶尔发生)以及我如何才能阻止它而不是到处写长表格的任何想法?从技术上讲,看到log()
回报void
,应该没有问题。