Seite 1 von 2

Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 21:40
von Vi-P
Gibt es eigentlich die Möglichkeit im Compiler eine Option einzuschalten, daß .i Variablen nicht automatisch deklariert werden, sondern, daß bei der ersten Verwendung der Typ angegeben werden muß. Ist ja seit je her ein Kritikpunkt an Basic, daß man Variablen nicht deklarieren muß. Die Diskussion hierzu will ich hier aber nicht lostreten. In PB geht das Deklarieren aber so mühelos (wie vieles andere) und ist ja außer bei .i auch (in irgendeiner Form) notwendig.
Warum den Aufwand? Nicht um irgendwelchen Formalismen nachzurennen. Ganz einfach, wenn ich einen Variablennamen vertippe, dann kann erfolgreich compiliert werden, mein Programm wird aber nicht wie gedacht funktionieren. Wenn es sich bei der vertippten Variable z.B. um einen String handelt, wird der Compiler (meist) meckern.

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 21:43
von RSBasic
Falls ich dich richtig verstehe: EnableExplicit
Variablen sind ohne manuelle Typsetzung standardmäßig Integer.

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 22:01
von Vi-P
Danke für die schnelle Antwort. Jein. Schön, daß es eine solche Funktion gibt und ich überlege mir doch sehr, diese zukünftig zu verwenden. "Einfacher" wäre es aber, wenn man
Variablen sind ohne manuelle Typsetzung standardmäßig Integer.
einfach abschalten könnte, so daß man (mindestens) .i bei der ersten Verwendung dahinter schreiben muß. Hätte den selben Effekt als mindestens define verwenden zu müssen.

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 22:19
von RSBasic
Meinst du ohne Define und einfach so?:

Code: Alles auswählen

MyVariable.i ;Neue Ganzzahl-Variable wird definiert
Falls ja: Es ist aber meiner Meinung nach unübersichtlich bzw. nicht klar erkennbar, in welcher Zeile die Variablen zuerst definiert wurden. Wenn irgendwo im Code beispielsweise MyVariable.i gibt, dann sieht man das nicht. Mit Define sieht man das besser, weil das Schlüsselwort eine andere Farbe hat. Man kann viel besser nach "Define" suchen.
Außerdem gibt es mehrere Arten, um eine Variable zu definieren:
  • Define
  • Global
  • Shared
  • ...
Das Schllüsselwort muss sein.
Vi-P hat geschrieben:"Einfacher" wäre es aber, wenn man
Variablen sind ohne manuelle Typsetzung standardmäßig Integer.
einfach abschalten könnte
Da musst du selber daran denken, die neue Variable explizit als Integer zu definieren, auch wenn es bereits standardmäßig definiert wird, wenn kein Typ angegeben wurde.

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 22:58
von NicTheQuick
Man kann den Standard auch ändern, indem man 'Define.TYP' alleine nutzt. Wenn du am Anfang eine unsinnige Struktur definierst und den Standardtyp auf diesen setzt, wirst du immer einen Fehler erhalten. :D

Code: Alles auswählen

Structure blablubb
EndStructure
Define.blablubb

i = "Hallo"

Debug i
Ansonsten stimme ich aber RSBasic zu.

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 23:26
von #NULL
netter trick.
in diesem fall kommt der fehler allerdings nicht:

Code: Alles auswählen

Structure blablubb
EndStructure
Define.blablubb

Define var.blablubb

i = var

Debug i
auch nicht mit Define var ohne typangabe

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 23:29
von RSBasic
@#NULL
Willkommen zurück :allright:

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 13.04.2016 23:52
von #NULL
hi!
fühlt sich an wie gestern :)

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 14.04.2016 00:25
von Vi-P
@NicTheQuick

Code: Alles auswählen

Structure blablubb
EndStructure
Define.blablubb

i = 1
geiler Trick ohne Frage. Die Frage ist nur, ist das sprachtechnisch "for ever"?

@RSBasic: Ja mein ich "einfach so". Ja es ist unübersichtlich... Aber es bläht z.B. den Code nicht "unnötig" auf.
Wenn man es sauber machen möchte/muß gebe ich dir recht. Für die schnelle Programmierung klatsch ich halt bei der ersten Verwendung den Typ dran und gut is. Wenn .i default ist, riskiere ich aber unnötig Fehler.
Ich finde das einfach als "3te" Variante (Zwischenstufe) sinnvoll.

Re: Strikte Erfordernis von Variablendeklaration als Option

Verfasst: 14.04.2016 10:10
von NicTheQuick
Du möchtest quasi sowas wie 'EnableExplicit', allerdings ohne dass man 'Define' hinschreiben muss. 'Define' soll quasi automatisch gemacht werden. Was soll innerhalb von Prozeduren gemacht werden? Automatisch 'Protected', oder 'Static' oder 'Shared'? Ich finde das zu undurchsichtig, weil du das Problem nur verschiebst. Anstatt dass der Standard ein '.i' ist, möchtest du als Standard 'Define' haben. Was ist, wenn jemand 'Global' oder 'Threaded' will? Ich finde es gut, so wie es ist.