Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-03-2009, 10:39   #1 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Gleicher Parameter für unterschiedliche Datentypen

Hallo. Ich habe mich schon mehrmals gefragt, ob ein Parameter einer Funktion mehrere Datentypen erwarten kann. Beispielsweise soll ein Parameter entweder ein Integer oder ein Array mit Integer sein und in der Funktion dann entsprechend behandelt werden.
Wie programmiert man das am intelligentesten?
mohj ist offline   Mit Zitat antworten
Alt 04-03-2009, 10:43   #2 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.996
da wird dir nix anderes übrig bleiben als ein Object als Wildcard zu benutzen ...

PHP-Code:
function test(e:Object):String {
  return 
typeof(e.value);
}

trace(test({value:0}));
trace(test({value:false}));
trace(test({value:"Hallo"})); 
Zumindest wüsste ich nix anderes.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'

Geändert von readme.txt (04-03-2009 um 10:48 Uhr)
readme.txt ist offline   Mit Zitat antworten
Alt 05-03-2009, 21:07   #3 (permalink)
volln00b
 
Benutzerbild von ice-breaker
 
Registriert seit: Mar 2005
Ort: Kronberg
Beiträge: 163
kann nun sein, dass ich mich irre, weil ich gerade selbst erst auf AS3 umsteige aber gabs da nicht sowas:
PHP-Code:
class xyz {
public function 
test(... e) : void {
}

und dann kann man nen Array übergeben oder einen einzelnen Wert und der wird dann zu nem array gemacht
__________________
<<vive la PHP>>
ice-breaker ist offline   Mit Zitat antworten
Alt 05-03-2009, 21:27   #4 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Stimmt schon, damit kannst du ein Array erstellen mit all den Parametern.
Ich suchte aber einen einfachen Weg, um die Typensicherheit gleich bei der Funktion zu gewährleisten.
mohj ist offline   Mit Zitat antworten
Alt 05-03-2009, 21:34   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.382
Also, wenn du Typsichersicherheit willst + Polymorphie, nimm Interfaces. die Object, ...rest oder * ist nicht so schick.
Omega Psi ist offline   Mit Zitat antworten
Alt 05-03-2009, 21:43   #6 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.935
In Flash kannst du keine Methoden überladen. Untypisierte Parameter
finde ich auch nicht so toll.

Würde verschiedene Methoden wählen, also testObject, testNumber etc.

gruß
sebastian ist offline   Mit Zitat antworten
Alt 05-03-2009, 21:55   #7 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Hmm, versteh ich jetzt nicht ganz. Ein Interface dient doch eher dazu, den Klassen vorzuschreiben welche Funktionen, Parameter usw sie bereitstellen müssen?
mohj ist offline   Mit Zitat antworten
Alt 05-03-2009, 21:59   #8 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.935
Bringt in deinem Fall auch nichts.

Aber es könnte Fälle geben wo du auf solch eins Typisieren könntest:

Code:
    function test ( value : IInterface )

Falls ich Psi richtig verstanden habe.
sebastian ist offline   Mit Zitat antworten
Alt 05-03-2009, 22:10   #9 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Achso, das Beispiel von Omega Psi wäre für eigene Klassen? zB wenn zwei meiner Klassen das Interface IMyInterface implementieren, kann ich bei einer dritten Klasse den Typ IMyInterface verlangen und ist somit entweder vom Typ die erste oder die zweite Klasse. Richtig?
mohj ist offline   Mit Zitat antworten
Alt 05-03-2009, 22:15   #10 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.935
Genau.
sebastian ist offline   Mit Zitat antworten
Alt 05-03-2009, 22:24   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.382
Genau das war meine Intention.
  • interface ICloneable
  • class Sheep implements ICloneable
  • class Clown implemente ICloneable
  • function clone(object:ICloneable):void
Schlechtes Beispiel... aber you get the idea.
Omega Psi ist offline   Mit Zitat antworten
Alt 05-03-2009, 22:29   #12 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Saban machts mit Pizzen, Florian mit Clowns... Interessant Aber habs begriffen, danke

Nur hilft mir das nicht so recht weiter. Ich arbeite ja mit Standartklassen. Habt ihr denn nie solche Probleme? Wird gleich mit zwei verschiedenen Klassen für den jeweiligen Typ gearbeitet oder wie?
mohj ist offline   Mit Zitat antworten
Alt 05-03-2009, 22:34   #13 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.935
Doch klar, kommt vor.

Die Möglichkeiten kennst du ja jetzt alle.

Man sollte nach Möglichkeit eigentlich immer typisieren, daher fallen für
mich schon mal ein paar Varianten weg. Da du native Datentypen
hast, fällt auch die Polymorphie weg.

Bleibt die Variante mit einer extra Methode für jeden Typ.
sebastian ist offline   Mit Zitat antworten
Alt 05-03-2009, 22:36   #14 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.382
Und welche Datentypen sind interessant und was soll passieren?
Omega Psi ist offline   Mit Zitat antworten
Alt 06-03-2009, 10:22   #15 (permalink)
Neuer User
 
Benutzerbild von mohj
 
Registriert seit: Jan 2009
Beiträge: 423
Ich fand nur das Beispiel nicht so trocken

Dann werd ich das jetzt mit zwei Methoden für jeden Datentyp lösen. Danke euch.
mohj ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele