Hmm, da magst du recht haben...naja, ich mache jetzt einfach mal dieses Tutorial was pdr2002 gerade reingesetzt hat
Wenn du Rückfragen hast: Ich bin hier.
Folgen Sie dem Video unten, um zu sehen, wie Sie unsere Website als Icon auf Ihrem Homescreen erstellen.
Anmerkung: This feature may not be available in some browsers.
Hmm, da magst du recht haben...naja, ich mache jetzt einfach mal dieses Tutorial was pdr2002 gerade reingesetzt hat
Parameter werden nicht in die runden Klammern geschrieben, sondern durch : gekennzeichnet, wobei man ihnen Namen geben kann
Das wird dann zu einem Aufruf in der Art[object messageWithParameteraram andAnotherOne:5];
objc_msgSend(object, @selector("messageWithParameter:andAnotherOne:"),param,5)
Eigentlich ist das alles nicht sehr schwierig.
Mit der Argumentation kannst du diese Fähigkeit jeder Programmiersprache andichten.Nö, die Parameternamen sind nur Bestandteil des Methodennamens. Ist aber letztlich eine Definitionsfrage und gehoppelt wie gesprungen.
Mit der Argumentation, kannst du diese Fähigkeit jeder Programmiersprache andichten.
Ich weiß nicht worauf die hinaus willst, aber Fortran kennt wohl tatsächlich benannte Parameter.Dann mach mal. Kannst ja mit Prolog, Fortran und Lisp anfangen
Alex
int gibmirKartoffelnDerGröße_derSorte(int Größe,int Sorte)
Nein, weil etwa in C nichts, was irgendwie mit Bezeichnungen von Parametern zusammenhängt bei dem Aufrufer ankommt. Es gibt genau keine Verbindung.Mit der Argumentation kannst du diese Fähigkeit jeder Programmiersprache andichten.
Der zweite Teil ist für den Aufrufer "unsichtbar". Er deint lediglich der Bezeichnung des Parameters innerhalb der Methode. Daher dürfen auch in Deklaration und Definition verschiedene Bezeichnungen verwendet werden. Die andere Bezeichnung dient der Bezeichnung außerhalb der Methode, muss also vom Aufrufer akzeptiert werden.Wenn die Parameter wirklich Namen hätten müsste man sie nicht zwei Mal in der Methodendefinition benennen(hat dann quasi 2 Namen andAnother und value in deinem letzen Beispiel).
@interface MyClass {
NSString* name;
}
…
@end
@implementation
- (id)initWithName:(NSString*)initName {
…
}
- (void)aMethodWithParamter:(NSString*)param another:(int)value …
…
// eh klar
[self aMethodWithParameter:@"Negm" another:9811];
// aber auch
[self aMethodWithAnother:9811 Parameter:@"Negm"];
Das ist schlau. Man hat zwar die zusätzliche Mühe des Lernens (was aber an sich ja auch schon ein Vorteil ist). Allerdings rechnet sich das ziemlich schnell, wenn man bedenkt, dass meist eine Sprache optimal unterstützt wird.@pdr2002:
Smalltalk kenne ich ebenso wie Objective-C nicht. Ich weigere mich aber, auf einem System was mir gefällt eine Alternativsprache zu nutzen (z.B. Java oder C++, von Basic reden wir mal besser nicht), aus diesem Grund will ich mir Objective-C einmal näher ansehen - zumal es die Entwicklungstools kostenlos dazu gibt.
Und was genauso soll die zusätzliche Verbindung bei ObjC sein?Nein, weil etwa in C nichts, was irgendwie mit Bezeichnungen von Parametern zusammenhängt bei dem Aufrufer ankommt. Es gibt genau keine Verbindung.
Objc:
[object methodWithParameter: a andAnother: b]
Python:
object.methodWithParameter_andAnother_(a,b)
Dafür ist es ja vermutlich gedacht. Damit man(idealerweise) weiß wozu die Parameter da sind und was sie sind ohne in die Doku gucken zu müssen. Trotzdem gehört das zur Funktion.Aber alleine der Gedanke, darauf zu kommen, zeigt ja, dass man die Bezeichnungen dem Parameter zuordnet und nicht der Methode "an sich".
Ich hab auch mit Basic angefangen. Aber ich häng nicht dran.
Ja. Es ist ein syntaktischer Unterschied.Und was genauso soll die zusätzliche Verbindung bei ObjC sein?
Ich habe sowohl bei C als auch bei ObjC eine Funktion mit einem Namen, der ich in vorgegebener Reihenfolge Parameter übergebe ich sehe da so ziemlich genau keinen Unterschied. Das ist einzig und allein ein syntaktischer Unterschied.
Selbstverständlich nicht.Und wie würdest du den Aufruf von ObjC-Methoden über PyObjC einordnen? Das sieht ungefähr so aus:
Sind die Parameter jetzt auf einmal nicht mehr benannt?Code:Objc: [object methodWithParameter: a andAnother: b] Python: object.methodWithParameter_andAnother_(a,b)
? Ich habe nicht bestritten, dass sie ein Teil des Methodennamens sind. Ich habe sogar gesagt, dass sie einen Teil des Methodennamens bilden.Dafür ist es ja vermutlich gedacht. Damit man(idealerweise) weiß wozu die Parameter da sind und was sie sind ohne in die Doku gucken zu müssen. Trotzdem gehört das zur Funktion.
Kein Problem, weil ich dazu schon geschrieben hatte. Fehlet aber in deinem ZItat.ObjC: „Hallo Programmierer ich möchte erst die Äpfel, dann das Mehl und zuletzt die Milch.“
„echte“ benannte Parameter: „Hallo Methode hier hast du Mehl und Milch und zuletzt noch die Äpfel.“
Ein besseres Beispiel ist mir da auf die Schnelle nicht eingefallen um den Unterschied zu verdeutlichen.
JeppAber du hast vermutlich recht, das führt zu nichts außer vom Thema weg.