Надеясь, кто-то может помочь с особенно необычной проблемой. В следующем коде (тщательно отлаженном) встречается первый случай (1) в коммутаторе, и новый экземпляр BannerSingle назначается для retVal (возвращаемое значение). К сожалению, хотя второй случай (2) никогда не встречается, назначение в нем retVal происходит, и я не могу скомпилировать. Когда я закомментирую назначение retVal для «case 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;
}
}
}