D (2) - Invariant String
lima-city → Forum → Programmiersprachen → C/C++ und D
aufruf
bedenken
benutzen
code
einzige sprache
fehlerquelle
generelle annahme
gewisse operationen
hoffen
konstante strings
operator
optimierung
philosophie
programmieren
programmierer
programmiersprache
sinn
string
text
verstehen
-
Hallo,
ich habe mir mal die neue Version von D angeschaut, und musste erstaunt feststellten, dass string als alias jetzt nicht mehr char[] sondern 'const(char)[] ist. Außerdem ist jetzt eine Wertinitialisierung wie diese nicht mehr möglich
char[] text = "Der Text";
Man müsste den String "" erst duplicaten:
char[] text = "Der Text".dup;
Allerdings verstehe ich den Sinn dahinter nicht, da man einen String ja wohl eher verändern möchte, als ihn konstant zu lassen. So wie es in der ersten Version war, war es doch super?! Warum ist das denn jetzt so geändert worden?
Also ich persönlich kann nur hoffen, dass dieses Konzept (was ich ehrlich gesagt nicht verstehe) verworfen wird. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Viele Programmiersprachen benutzen als default konstante Strings, weil man damit einige Optimierungen ermöglichen kann (weniger Platzverbrauch, schnellere Vergleiche, weniger Fehlerquellen). Du musst bedenken, dass Strings auch etwas länger sein können und gewisse Operationen dann teurer werden.
Die generelle Annahme ist daher schon, dass veränderliche Strings in Anwendungsfällen eher die Ausnahme sind. Und da D2 nicht die einzige Sprache ist, die nach dieser Philosophie verfährt, wird sich das nicht so schnell ändern.
Ich kann natürlich verstehen, dass ein Aufruf an string.dup() jetzt für dich nervig ist. Aber zumindest musst du nicht casten -
Hm. klingt einleuchtend. Da werde ich wohl einen Assing-Operator programmieren müssen (denn natürlich weiß der Programmierer besser was er braucht...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage