Datatypes in Python
Von: Florian Weimer (fw@deneb.enyo.de) [Profil]
Datum: 06.07.2008 16:19
Message-ID: <87zlov3xiq.fsf@mid.deneb.enyo.de>
Newsgroup: de.comp.lang.python
Datum: 06.07.2008 16:19
Message-ID: <87zlov3xiq.fsf@mid.deneb.enyo.de>
Newsgroup: de.comp.lang.python
Diverse ML-Varianten haben ein nettes Konstrukt der Form:
datatype t = NULL | I of int | S of string
Will sagen: Werte von Typ t sind entwender NULL, oder sind ein I mit
Zahl-Argument oder ein S mit Zeichenketten-Argument. Man kann damit
z.B. schreiben:
case var of
NULL => macheNULL ()
| I iVar => macheInt iVar
| S sVar => if sVar <> "" then macheString sVar else ()
D.h. man kann recht elegant die verschiedenen Fälle abhandeln.
Ich stelle mir für Python in etwa sowas vor:
T = mkEnum(name="T", const=["NULL"], params=["I",
"S"])
Als Wertkonstruktoren fungieren dann T.NULL, T.I(0), T.S("foo") (wobei
keine Typprüfung der Argumente stattfindet). Irgendwie sollte man einen
Visitor aufrufen, also etwa:
class V(T.visitor):
def NULL(self): macheNULL()
def I(self, iVar): macheInt(iVar)
def S(self, sVar): if s <> "": macheStrig(sVar)
V().visit(var)
Die visit-Methode sollte prüfen, ob var tatsächlich den passenden Typ
hat. Vielleicht geht das syntaktisch auch noch etwas eleganter.
Gibt's sowas schon? Enums (die einfache Variante davon) scheinen noch
nicht den Weg in die Standardbibliothek gefunden zu haben...
[ Auf dieses Posting antworten ]Antworten
- Marc 'BlackJack' Rintsch (06.07.2008 17:08)
