Strikte Erfordernis von Variablendeklaration als Option
Strikte Erfordernis von Variablendeklaration als Option
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.
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
Falls ich dich richtig verstehe: EnableExplicit
Variablen sind ohne manuelle Typsetzung standardmäßig Integer.
Variablen sind ohne manuelle Typsetzung standardmäßig Integer.
Re: Strikte Erfordernis von Variablendeklaration als Option
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
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.Variablen sind ohne manuelle Typsetzung standardmäßig Integer.
Re: Strikte Erfordernis von Variablendeklaration als Option
Meinst du ohne Define und einfach so?:
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:
Code: Alles auswählen
MyVariable.i ;Neue Ganzzahl-Variable wird definiertAußerdem gibt es mehrere Arten, um eine Variable zu definieren:
- Define
- Global
- Shared
- ...
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.Vi-P hat geschrieben:"Einfacher" wäre es aber, wenn maneinfach abschalten könnteVariablen sind ohne manuelle Typsetzung standardmäßig Integer.
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Strikte Erfordernis von Variablendeklaration als Option
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.
Ansonsten stimme ich aber RSBasic zu.
Code: Alles auswählen
Structure blablubb
EndStructure
Define.blablubb
i = "Hallo"
Debug iRe: Strikte Erfordernis von Variablendeklaration als Option
netter trick.
in diesem fall kommt der fehler allerdings nicht:
auch nicht mit Define var ohne typangabe
in diesem fall kommt der fehler allerdings nicht:
Code: Alles auswählen
Structure blablubb
EndStructure
Define.blablubb
Define var.blablubb
i = var
Debug i
Zuletzt geändert von #NULL am 13.04.2016 23:29, insgesamt 1-mal geändert.
Re: Strikte Erfordernis von Variablendeklaration als Option
@#NULL
Willkommen zurück
Willkommen zurück
Re: Strikte Erfordernis von Variablendeklaration als Option
hi!
fühlt sich an wie gestern
fühlt sich an wie gestern
Re: Strikte Erfordernis von Variablendeklaration als Option
@NicTheQuick
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.
Code: Alles auswählen
Structure blablubb
EndStructure
Define.blablubb
i = 1
@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.
- NicTheQuick
- Ein Admin
- Beiträge: 8820
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Strikte Erfordernis von Variablendeklaration als Option
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.


