Deklarieren einer Variablen ohne Zuweisung

7

Gibt es eine Möglichkeit, eine neue Variable in F # zu deklarieren, ohne ihr einen Wert zuzuweisen?

    
cookya 18.06.2012, 15:46
quelle

5 Antworten

16

Siehe Aidans Kommentar.

Wenn Sie darauf bestehen, können Sie dies tun:

%Vor%

Dies wird den absoluten Nullwert zuweisen ( 0 für numerische Typen, null für Referenztypen, struct-zero für Werttypen).

    
Ramon Snir 18.06.2012, 15:57
quelle
7

Sie können auch die explizite Feld -Syntax verwenden:

%Vor%     
Daniel 18.06.2012 16:23
quelle
7

Es wäre interessant zu wissen, warum der Autor das in F # benötigt (ein einfaches Anwendungsbeispiel würde genügen).

Aber ich denke, einer der häufigsten Fälle, wenn Sie nicht initialisierte Variable in C # verwenden können, ist, wenn Sie eine Funktion mit out -Parameter aufrufen:

%Vor%

Glücklicherweise können Sie in F # diese Situation mit einer viel netteren Syntax behandeln:

%Vor%     
Ed'ka 19.06.2012 07:34
quelle
4

Ich stimme allen zu, die gesagt haben "tu es nicht". Wenn Sie jedoch davon überzeugt sind, dass Sie sich in einem Fall befinden, in dem es wirklich notwendig ist, können Sie Folgendes tun:

%Vor%

... und später einen Wert zuweisen.

%Vor%

Aber denken Sie daran, dass jeder, der gesagt hat, "ändern Sie stattdessen Ihren Ansatz" wahrscheinlich richtig ist. Ich code in F # Vollzeit und ich musste nie eine nicht zugewiesene "Variable" deklarieren.

Ein weiterer Punkt: Obwohl Sie sagen, dass es nicht Ihre Entscheidung war, F # zu verwenden, sage ich voraus, dass Sie sich bald glücklich schätzen werden, es zu benutzen!

    
Kit 19.06.2012 12:48
quelle
2

F # -Variablen sind standardmäßig unveränderbar, sodass Sie nicht später einen Wert zuweisen können. Wenn sie daher ohne Anfangswert deklariert werden, sind sie ziemlich nutzlos, und daher gibt es keinen Mechanismus dafür.

Wahrscheinlich könnte eine veränderbare Variablendeklaration ohne einen Anfangswert deklariert werden und trotzdem nützlich sein (sie könnte einen anfänglichen Standard wie C # -Variablen erhalten), aber die F # -Syntax unterstützt dies nicht. Ich würde vermuten, dass dies für Konsistenz ist und weil veränderbare variable Slots nicht idiomatische F # sind, so gibt es wenig Anreiz, spezielle Fälle zu machen, um sie zu unterstützen.

    
Matthew Walton 18.06.2012 15:56
quelle

Tags und Links