Seite 1 von 1

Typendeklaration von Prozeduren und Arrays

Verfasst: 18.10.2012 21:12
von Sebastian
Ich frage mich schon seit einiger Zeit, warum eigentlich der Typ bei Prozeduren und Arrays so unterschiedlich festzulegen ist.

Procedure<.Typ> Name ()
Dim Name<.Typ> ()

Ich komme jedesmal wieder ins Überlegen, wo nun der Punkt und der Typ anzugeben ist. Der Sinn hat sich mir noch nicht erschlossen. Warum nicht immer die Typendeklaration nach dem Namen oder eben nach dem Schlüsselwort? Eine einheitliche Regelung wäre doch sicher einfacher? Kann mich jemand erhellen?

Re: Typendeklaration von Prozeduren und Arrays

Verfasst: 19.10.2012 11:37
von NicTheQuick
Es gehen sogar noch viel verwirrendere Sachen:

Code: Alles auswählen

Define.d a, fu.q
Global.i s, thi.s
Na? Welche Variable hat jetzt welchen Typ?

Re: Typendeklaration von Prozeduren und Arrays

Verfasst: 19.10.2012 18:11
von Sebastian
Ach du jammer... das ist heftig. Auf so eine Idee wäre ich nicht gekommen. Man muss es also einfach so hinnehmen, ja? Es folgt also keiner Logik, die nachvollziehbar wäre?

Re: Typendeklaration von Prozeduren und Arrays

Verfasst: 19.10.2012 18:22
von STARGÅTE
Das ist vermutlich ein "Resultet" der Entwicklung von PureBasic.
Sachen die einmal festgelegt wurde, werden meist nicht geändert, auch wenn andere Sachen hinzukommen, die die "Logik" kreuzen.

Das ist ja bei List und Map nicht anders, AddElement war zuerst da (für Listen) und für Maps heißt es nun AddMapElement().
Auch hier wäre eine Änderung zu AddListElement() sinnvoller, oder ein AddElement() was beide Typen verarbeiten kann.

Ich erkläre das mit den Type so:
- Einer Prozedur kann man nicht direkt einene Wert zuordnen, deswegen steht der Typ nicht hinter dem Namen, sondern am Schlüsselwort also für ProcedureReturn
- Einem Array, Liste, Map, Variable kann man direkt ein Wert zuodnen, deswegen der Typ hinter dem Namen.

Define.f ist ja in dem Sinne nun eine Vereinfachung, um den Standardtyp für eine Zeile (bzw. das ganze Programm) zu definieren. Obwohl es immer Ratsam ist, den Typ immer anzugeben, also auch .i

Re: Typendeklaration von Prozeduren und Arrays

Verfasst: 19.10.2012 18:41
von ts-soft
Die Logik ist wohl nicht Perfekt, aber ich denke mal, das Anhängen des Rückgabetyps an Procedure macht es
dem Lexer des Compilers einfacher und ist auch im Source schneller ersichtlich, als wenn es zwischen Name und
dem Wust der Parameter steht.

Ich denke diese Dinge sind wichtiger als alles unbedingt einer abstrakten Logik aufzuzwingen.

Just my two cents :wink: