Domino 9 und frühere Versionen > Entwicklung
NotesSession in einer Klasse
Axel:
Hi,
ist ja klar. Du hast zwar in Zeile 2 die Variable deklariert, aber nicht initialisiert.
Du kannst das aber auch so machen:
Set session = New NotesSession
Du brauchst hier kein DIM mehr.
Axel
Aladdin Sane:
Okay, vielen Dank.
Aber wenn ich den folgenen Code außerhalb einer Klasse kompiliere, funktioniert es:
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.currentdatabase
Marinero Atlántico:
--- Zitat von: Axel am 04.04.05 - 15:51:31 ---
Du brauchst hier kein DIM mehr.
--- Ende Zitat ---
Wie von Thomas richtig gesagt, führt das dim sogar zu einem "Variable Shadowing", d.h. du legst eine lokale (d.h. lokal im Konstruktor deklarierte Variable an, die die Instanzvariable überdeckt. Solche dinge haben mich mal sehr verwirrt.
In Lotusscript kann man glaub ich Instanzvariablen nicht direkt deklarieren und instantiieren (was in Java geht). In nicht-OO Lotusscript geht es auch (wie du gezeigt hast).
--- Code: ---private session = new notessession() ' does not work
--- Ende Code ---
deshalb:
--- Code: ---private session as NotesSession 'deklarieren
sub new()
Set session = new NotesSession() ' instantiieren.
end sub
--- Ende Code ---
Traditionell war es der Sinn von KOnstruktoren deklarierte Instanzvariablen zu initialisieren.
ESOTERISCH_START
Mit heutigen auf Modularität ausgerichteter OO Praxis (sehr starK: Inversion Of control) hat sich das explizite initialisieren von Variablen in Konstruktoren als unmodular herausgestellt. Das ist aber ein ganz anderer Gedanke.
ESOTERISCH_END
Sofern du dir in deinem Kopf Klarheit bzgl. der Begrifflichkeit von:
- Deklarieren
- Initialisieren
schaffst, dürfte es kein problem mehr machen.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln