Mit der Argumentation kannst du diese Fähigkeit jeder Programmiersprache andichten.
Nein, weil etwa in C nichts, was irgendwie mit Bezeichnungen von Parametern zusammenhängt bei dem Aufrufer ankommt. Es gibt genau keine Verbindung.
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).
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.
Und tatsächlich sind die beiden häufig gleich. Aber nicht immer: etwa dann, wenn der Bezeichner innerhalb der Klasse bereits besetzt ist und daher nicht noch einmal als Paramtername (intern) herhalten kann. Accessoren sind so ein Beispiel und Initiliasierer.
Code:
@interface MyClass {
NSString* name;
}
…
@end
@implementation
- (id)initWithName:(NSString*)initName {
…
}
Was du wahrscheinlich meinst, ist, dass man nicht die Parameter selbst "zuweisen" darf, wie man das aus anderen Programmiersprachen kennt. VB bietet das etwa. Das sähe dann so aus:
Code:
- (void)aMethodWithParamter:(NSString*)param another:(int)value …
…
// eh klar
[self aMethodWithParameter:@"Negm" another:9811];
// aber auch
[self aMethodWithAnother:9811 Parameter:@"Negm"];
Das geht in der Tat nicht.
Aber alleine der Gedanke, darauf zu kommen, zeigt ja, dass man die Bezeichnungen dem Parameter zuordnet und nicht der Methode "an sich".
Aber es ist wirklich müßig, darüber zu diskutieren.