Ich habe mit vielen Sprachen gearbeitet, die keine Methodensignatur basierend auf dem Rückgabetyp generieren. Ich habe auch mit einem (vielleicht einigen?) Gearbeitet, der dies tut. Diejenigen, die mir in der Vergangenheit keine Probleme bereitet haben (wie hier ). Warum generieren Programmiersprachen Methodensignaturen ohne Rücksicht auf den Rückgabetyp?
Update: Ich beziehe mich speziell auf kompilierte statisch typisierte Sprachen
programming-languages
Charles Lambert
quelle
quelle
Antworten:
Es würde nicht gut mit Typecasting und Typhierarchien zusammenpassen. Wenn Sie zwei Versionen einer Methode haben, von denen eine Typ A und eine Typ B zurückgibt, treten folgende Probleme auf:
Sie könnten dies mit Casts umgehen, aber das würde genauso viel Eingabe erfordern wie das Umbenennen einer der Funktionen. Sie können auch einen Compilerfehler registrieren, wenn der Aufruf nicht eindeutig ist. In diesem Fall muss der Benutzer ähnliche Anstrengungen unternehmen.
quelle
Weil Sie eine Methode aufrufen und ihr Ergebnis nicht zuweisen können.
quelle
Faustregel: Stark typisierte Sprachen binden normalerweise die Methodensignatur an einen Rückgabetyp. Schwach getippte Sprachen nicht.
Ich kenne C # nicht, aber ich gehe davon aus, dass das Problem möglicherweise an der Art und Weise liegt, wie C # mit Generika umgeht. Es könnte eine völlig andere Methode für die generische sein. In diesem Fall handelt es sich tatsächlich um zwei verschiedene Methoden.
quelle