[AS] Typedef-equivalent?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op een site zag ik dat het mogelijk was om typdef in actionscript te gebruiken doormiddel van de volgende methode:
code:
1
public const TypedefClassName : Class = OriginalClassName;

dus nu probeer ik het volgende:
code:
1
public static const Personen : Class = Vector.<Vector.<int>>;

Maar ik kan deze classe niet gebruiken als type door bv het volgende te doen:
code:
1
function WieZijnLief(personen : Personen)

Dan krijg ik de volgende fout:
code:
1
col: 38 Error: Type was not found or was not a compile-time constant: Personen.


Is typedef wel mogelijk in AS3? zo nee, weten jullie een andere manier om met lange classtypes om te gaan zoals Vector.<Vector.<int>>?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-08 16:56
Zover ik weet kan wat jij wilt niet in AS3.

Het wordt geen geldig runtime type zeg maar, dus als je type aangeeft van variabele zal je alsnog de originele datatype moeten opgeven.

Flash ActionScript:
1
2
3
4
5
6
// Dit kan wel:
public const Personen : Class = Array;
var personen:Array = new Personen();

// Maar dit niet
var personen:Personen = new Personen();

[ Voor 3% gewijzigd door McVirusS op 29-11-2010 16:58 ]


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 07:32
Wellicht dat het volgende wel werkt?
Flash ActionScript:
1
2
public const Personen : Class = Array;
var personen= new Personen();

Je bent namelijk niet verplicht om bij de variabele declaratie een type op te geven, zover ik me het nog kan herinneren.

[ Voor 48% gewijzigd door Caelorum op 29-11-2010 17:37 ]


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Verwijderd schreef op maandag 29 november 2010 @ 16:01:
Op een site zag ik dat het mogelijk was om typdef in actionscript te gebruiken doormiddel van de volgende methode:
Als je de AS3 language reference leest zul je zien dat Class helemaal niet bedoeld is om types te aliasen zoals jij probeert te doen.

Class is een systeem type wat gemaakt is om informatie over een ander type te bevatten (een beetje zoals System.Type in .NET). Om een nieuwe instantie van het bijgehouden type te maken is er voor gekozen om de new operator te gebruiken, waarschijnlijk omdat dat terug grijpt op de prototype eigenschappen van ECMAscript. Het had eigenlijk net zo goed een createInstance method kunnen zijn.

Personen is in dit verhaal een variabele die concrete informatie over een bepaald type bevat, namelijk het type Vector.<Vector.<int>>. Personen zelf is hier dus niet afgeleid van het type Vector.<Vector.<int>> en de new operator maakt dus ook niet een nieuwe instantie van een 'type' Personen aan.

(Zelf ben ik trouwens van mening dat het gebruik van een createInstance method ipv de new operator een hoop van dit soort verwarring zou hebben voorkomen.)
Caelorum schreef op maandag 29 november 2010 @ 17:36:
Wellicht dat het volgende wel werkt?
Flash ActionScript:
1
2
public const Personen : Class = Array;
var personen= new Personen();

Je bent namelijk niet verplicht om bij de variabele declaratie een type op te geven, zover ik me het nog kan herinneren.
Alleen is het sinds strong typing toegevoegd is aan ActionScript al tijden aan te raden dat wel te doen (om een aantal redenen, niet in den minste voor performance) en is het geloof ik in ActionScript 3 zelfs verplicht tenzij je zo dom bent het uit te zetten. Er bestaat in AS3 zelfs een speciaal type * om dynamic types aan te geven. Verder moeten classes ook gedeclareerd worden als dynamic wil je met expandos werken.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 07:32
R4gnax schreef op maandag 29 november 2010 @ 21:56:
[...]
Alleen is het sinds strong typing toegevoegd is aan ActionScript al tijden aan te raden dat wel te doen (om een aantal redenen, niet in den minste voor performance) en is het geloof ik in ActionScript 3 zelfs verplicht tenzij je zo dom bent het uit te zetten. Er bestaat in AS3 zelfs een speciaal type * om dynamic types aan te geven. Verder moeten classes ook gedeclareerd worden als dynamic wil je met expandos werken.
Ach ja :) Het was dan ook alweer een jaar geleden dat ik er serieus mee bezig ben geweest..
Pagina: 1