Надеюсь, что кто-то может помочь с особенно необычной проблемой. В следующем коде (полностью отлаженный) первый случай (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;
}
}
}
ли Баннер реализации IBanner? –
Забыл упомянуть, извините. И BannerSingle, и Banner реализуют IBanner. Даже если я не верну их (просто создайте новые экземпляры локально), проблема сохраняется. – JoelPrz
Когда вы говорите, что не можете скомпилировать, что такое ошибка? –