静态类方法中的意外变量赋值

时间:2012-02-23 17:22:29

标签: actionscript-3

希望有人可以帮助解决一个特别不寻常的问题。在下面的代码中(彻底调试),满足交换机中的第一种情况(1),并为retVal(返回值)分配了一个新的BannerSingle实例。不幸的是,虽然第二种情况(2)从未得到满足,但其中对retVal的分配发生了,我无法编译。当我将retVal的作业注释掉为“案例2:”时,一切正常。

我尝试使用if / else而我仍然得到相同的奇怪行为。还尝试了许多涉及单独变量等的解决方案。 有人碰巧知道我搞砸了哪里?提前致谢。 JAP

package fl {

import fl.IBanner;
import fl.Banner;
import fl.BannerSingle;
import fl.BannerVars;
import flash.display.Stage;
import flash.display.MovieClip;

public class BannerFactory {

    private static var retVal:IBanner;

    public function BannerFactory() {}

    public static function createBanner(bannerVars:Object, ob:Stage):IBanner {          
        switch (bannerVars.numRecipes) {
            case 1:
                retVal = new BannerSingle(bannerVars, ob);
                break;
            case 2:
                retVal = new Banner(bannerVars, ob);
                break;
            default:
                break;
        }   
        return retVal;
    }
}

}

1 个答案:

答案 0 :(得分:0)

你应该使用大括号来引入一个新的声明空间,如果没有它们,在switch语句中声明的任何变量都可以在所有case分支的声明点中看到。请尝试以下方法。

    switch (bannerVars.numRecipes) {
        case 1:
        {
            retVal = new BannerSingle(bannerVars, ob);
        }
            break;
        case 2:
        {
            retVal = new Banner(bannerVars, ob);
        }
            break;
    }   

此外,空的默认情况是多余的......