2015-09-08 4 views
-1

В ActionScript3, как говорится в заголовке, я пытаюсь передать два разных типа данных в одном векторе, создав для него интерфейс. Есть ли у кого-нибудь пример?Передача двух разных типов данных в векторе с использованием интерфейса

+0

насколько разные эти два объекта? – BotMaster

+0

Если комментарий BotMaster представляет собой запрос о том, следует ли вообще помещать разрозненные объекты в вектор, я согласен с тем, что вы должны быть очень осторожны, скрывая различия в интерфейсе. Если вы не будете заблокированы, почему и как это будет сделано, так как, теперь, и впредь ваша программа может стать очень хрупкой. – Joseph

ответ

2

Если они не связаны друг с другом, вы можете вместо этого рассмотреть массив. Если вам нужны функции Vector, вы просто относитесь к нему как обычно: создайте вектор с интерфейсом как тип, а не самый общий базовый класс.

var v:Vector.<IFace> = new Vector.<IFace>(); 

... и, конечно, реализовать Iface на тех классов, которые вы хотите поместить в вектор

UPDATE - ОК, как продолжение ответа, вот фактический интерфейс ...

public interface IFace 
    { 
     function doSomethingAllImplementersCanDo() : Boolean; 
    } 

... это будет в файле IFace.as. Класс, который реализует Iface может выглядеть следующим образом ...

public class MonsterTruck implements IFace 
    { 
     public function doSomethingAllImplementersCanDo() : Boolean 
     { 
      return true; 
     } 
    } 

... и где-то в вашей программе ...

 var v:Vector.<IFace> = new Vector.<IFace>(); 
     var mt:MonsterTruck = new MonsterTruck(); 
     v.push(mt); 
     var throughIFace:IFace = v.pop(); 
     trace(throughIFace.doSomethingAllImplementersCanDo()); 

Я рекомендую проверить Adobe документацию здесь: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f41.html

+0

привет joseph. Большое спасибо за ваш ответ! Я знаком с тем, как мне придется реализовать вектор с интерфейсом вместо базового класса. что я не знаю, как написать интерфейс. у вас есть пример? Спасибо! – wolga

+0

@wolga, я не уверен, что вполне понимаю. Как, с одной стороны, вы знаете, как реализовать интерфейс, а с другой стороны, не знаете, как его написать? Как вы можете реализовать его, не зная, как его написать? – Joseph

+0

Я обновил ответ на примере – Joseph

Смежные вопросы