StringOperationen = unlogisch
Übersicht

![]() |
beanage.johannesBetreff: StringOperationen = unlogisch |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi, ich beschäftige mich zz. sehr stark mit Cocoa, bzw. Cocoa/Obj-C ist meine "hauptprache" geworden, und erst an diesem punkt ist mir aufgefallen wie unlogisch es in BMax ist das man Strings addieren kann. weil die strings in BMax ja auch ein Type sind... das ist einfach unbegreiflich... da ist doch was falsch!
Danke |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
...und was genau ist damit jetzt nicht in Ordnung? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bitte würze diesen Thread noch mit etwas Sinn, resp. einer Aussage, die eine Diskussionsbasis bietet, sonst erlaub' ich mir, ihn in den Trash wandern zu lassen.
mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sinn? der sinn ist ja das das ganze unsinn ist, wenn man sich das durcliest sollte man das erkennen, ich möchte wissen WARUM ist das UNSINNIG^^
SINN: Man kann doch nicht einfach 2 Types addieren ?? was soll das, das gehhhhht NICHT!! a:string = "a" b:string = "b" wenn ich die mit + addiere dann geht das . das sollte aber unmöglich sein. und warum kann man a:string = "lol" einfach mal ohne methode nen wert übergeben obwohl a ein type ist? bei einer INT geht das ja , aber ein string ist in bmax eine klasse, das ist unlogisch und nerft mich einfach irgendwie weil ich gerne wissen möhte warum sowas gehen soll. sinn verstanden? |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ist daran jetzt so schlimm? Mag ja sein, dass BMax die Strings intern noch mal anders handelt, so dass das Ganze möglich ist...
Edit: Gibt es in BMax nicht auch wie in C++ die Möglichkeit Operatoren in Types zu definieren? |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
ach vergesst es... bmax is sowieso böööse ![]() |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso?
Der String-Type: Code: [AUSKLAPPEN] struct BBString{ BBClass* clas; int refs; int length; BBChar buf[]; }; |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man könnte jetzt schreiben, dass es einfach geht. Punkt.
Warum sollte so etwas nicht gehen: Es gibt sprachen, wie Ruby da kannst du sogar jeder Klasse eine +/-/*/÷-Methode definieren, sodass man zwei Vektoren, die man als Klasse definiert hat, einfach addieren kann und nicht so einen Schmarrn wie vektorc = vektora.add(vektorb) machen muss. Das ist doch total unintuitiv. Außerdem ist String afaik keine "echte" Klasse. Versuch mal eine Klasse von String abzuleiten. (Type A extends String). Geht nicht. EDIT: Die Frage ist ja eigentlich, warum es deiner Meinung nach nicht möglich sein sollte Objekte zu addieren. Nur weil es keine direkten Zahlenwerte sind. Wir benutzen schließlich Hochsprachen, damit wir uns nicht darum kümmern müssen, was jetzt eine Adresse oder ein Pointer ist und was etwas anderes oder wie auch immer. Dann kann man so nützliche Features auch einbauen. |
||
- Zuletzt bearbeitet von Artemis am So, Nov 01, 2009 20:33, insgesamt einmal bearbeitet
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das meinte ich. In C++ geht doch so was wie:
Code: [AUSKLAPPEN] class string { public: char* str; string operator+(string str) { return this.str + str.str; } }; |
||
- Zuletzt bearbeitet von Nicdel am So, Nov 01, 2009 20:36, insgesamt 3-mal bearbeitet
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Java machts mit dem String "addieren" genau so, sehe nicht warum das falsch sein solle.
Und deiner Logik nach zu urteilen sind Arrays auch ein Regelbruch. Nämlich sowas ist in BMax auch erlaubt:Code: [AUSKLAPPEN] Local MeinArray:String[10]
MeinArray[5]="Hallo" Print MeinArray.length-1 'Oha die Arrays sind ja auch Types :O Also wenn du was zu meckern hast, dann beschwehr dich beim Salzamt und nicht bei uns... EDIT: Da waren andere schneller ![]() |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Noch was:
Wie ist es denn deiner Meinung nach "richtig"? Mit einem zusätzlichen String-Additions-Operator, wie in PHP? Oder per Methoden "asd".add("asd")? |
||
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
eigentlich per methode, da das für mich einfach logisch erscheint^^ ![]() |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder mit Methoden, die durch Operatoren dargestellt werden?
Für mich eher der Operator. Mit Methode sieht das bescheuert aus und ist komplizierter. |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
beanage.johannes |
![]() Antworten mit Zitat ![]() |
---|---|---|
kk jedem das seine ![]() |
||
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sowas nennt sich Operatorüberladung und ist in vielen Programmiersprachen vorhanden, nebenbei auch unglaublich sinnvoll und alles andere als unglogisch (ich fürchte, du weißt nichtmal was "Logik" überhaupt ist).
Du musst die Schuld deines dermaßen beschränkten Horizonts nicht auf BMax schieben, jwolf255. |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau, im Grunde ist es eigtl. unlogisch warum in BlitzMax Operatoren für die Klasse String definiert sind, man sie aber für keine andere Klasse definieren kann.
Naja, da hat Mark wohl ein bisschen was intern zusammengehackt. Schade eigentlich. Aber da auch schon Funktionen nicht überladen werden können, wäre es auch sehr merkwürdig, wenn man das jetzt für Operatoren könnte. ![]() |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist wirklich schade, in C++ fand ich es sehr nützlich ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
@jwolf555: Du musst es als Feature sehen. Es ist doch viel einfacher Strings durch den "+" Operator aneinander anzuhängen als wenn wir immer sowas schreiben müssten:
Code: [AUSKLAPPEN] strcat(str2,str1)
strcat(str2,str3) um nur 3 Strings zu "addieren". Im Fall BlitzMax erledigt das der Compiler und ich bin froh darüber und finde es schade, dass man Strings nicht auch "multiplizieren" kann. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meinst du so was wie "Hallo"*3 = "HalloHalloHallo"? | ||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde eher sagen, dass Obj-C da etwas umständlich vorgeht:
Code: [AUSKLAPPEN] NSString *mystring = @"Hallo"; mystring = [mystring stringByAppendingString:@" Welt"]; da ist mir Code: [AUSKLAPPEN] Local mystring:String = "Hallo" + " Welt"
doch um einiges einfacher! Mag vielleicht daran liegen, dass ich BMax abhängig bin. ![]() cheers ~edit~ es heißt "stringByAppendingString", nicht "byAppendingString". ObjC ist eben nicht so meins! :> |
||
- Zuletzt bearbeitet von d-bug am Mo, Nov 02, 2009 13:17, insgesamt einmal bearbeitet
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group