Toon posts:

[flash as2]type checking op function-argumenten

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik wil typechecking forceren op een argument dat ik meegeef aan een functie. normaal gesproken krijg je bijvoorbeeld bij
code:
1
var testVar:Number = "geen num";

netjes de foutmelding found String where Number is required.
wanneer ik een type definieer voor een functie argument, krijg ik die foutmelding echter niet
code:
1
2
3
4
test = function(myVar:Number) {
    trace(myVar);
}
test("geen number");

ik dacht eerst dat typechecking wellicht binnen een functie niet werkte, omdat
code:
1
2
3
4
test = function(myVar:Number) {
    var someVar:Number = myVar;
}
test("geen number");

ook geen foutmelding oplevert, maar
code:
1
2
3
4
test = function(myVar:Number) {
    var someVar:Number = "geen Number";
}
test("geen number");

levert weer wel de gewenste foutmelding op.
verder levert
code:
1
2
var someString = "some String";
var testVar:Number = someString;

ook weer geen foutmelding, en
code:
1
2
var someString:String = "some String";
var testVar:Number = someString;

weer wel. Ik snap er niks meer van. Weet iemand hoe ik wel typechecking op functieargumenten kan forceren, en wat de logica achter het wel en niet krijgen van de foutmelding is?

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat betreft de functie moet ik je mijn antwoord even schuldig blijven, maar wat je variabele-toewijzing betreft:

Flash ActionScript:
1
2
var someString = "some String";
var testVar:Number = someString;


Hier assign je een "untyped" variabele, waardoor je tijdens het compilen geen foutmelding krijgt. Wil je dat wel forcen, dan moet je idd net zoals je tweede voorbeeld ook je eerste variabele "typen".

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • tie-rep
  • Registratie: Oktober 2001
  • Laatst online: 19-02 15:56

tie-rep

nu met ir. !

in 'essential actionscript 2.0 (eas2) by colin moock' staat een heel hoofdstuk over dit fenomeen.

Misschien is het voor jou nu nuttig om de functie een data type mee te geven..
code:
1
2
3
4
5
test = function(myVar:Number) :Number {
    var someVar:Number = myVar;
}

test("geen number");

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 22-04 11:34
tie-rep schreef op dinsdag 06 december 2005 @ 11:26:
in 'essential actionscript 2.0 (eas2) by colin moock' staat een heel hoofdstuk over dit fenomeen.

Misschien is het voor jou nu nuttig om de functie een data type mee te geven..
code:
1
2
3
4
5
test = function(myVar:Number) :Number {
    var someVar:Number = myVar;
}

test("geen number");
Op zich betekent dat niks want daarmee geef je alleen aan dat de functie een waarde van het type "Number" teruggeeft.

Verwijderd

Topicstarter
@tie-rep: wat jij suggereert is het meegeven van een return-type, en dat is niet wat ik wil. Het gaat mij er om te kunnen vastleggen welk type variabele als input is toegestaan. Ik heb wel nog maar even moock erop nageslagen. Ik had er eerst overheen gekeken, maar daar worden functies net anders gedeclareerd: niet als functionname = function(var:type):returntype, zoals ik hierboven doe, maar als function functionname(var:type):returntype. en die twee varianten gaan anders om met de type checking:
code:
1
2
3
4
5
function test(myVar:Number):Void {
    trace(myVar);
}
var testVar:String = "een String";
test(testVar);

levert wel een type mismatch op, maar
code:
1
2
3
4
5
test2 = function(myVar:Number):Void {
    trace(myVar);
}
var testVar2:String = "een String";
test2(testVar);

niet.