Warum erstreckt sich ein Berechnungsausdruck nicht über den finally-Block?

8

Zum Beispiel:

%Vor%

Sie können die do! nicht ausführen, da Sie schließlich die Nachricht vom Compiler bekommen "Sie können do! nur in einem Berechnungsausdruck verwenden", aber es ist immer noch drin.

Ich weiß, wie ich das lösen kann, aber ich möchte verstehen, warum der Compiler dieses Szenario einschränkt.

Ok, nach einigem Gerede denke ich, dass es so entzuckert ist: (Ich bin sehr glücklich, dass wir Cexprs schreiben können)

von:

%Vor%

zu:

%Vor%

Ich bekomme, dass der zweite Teil von TryFinally keine cexpr unterstützt.

    
albertjan 16.09.2014, 13:31
quelle

1 Antwort

7

Wie bereits in der Frage diskutiert, werden try-finally -Ausdrücke mit einem Berechnungsausdruck für die finally -Klausel einfach nicht unterstützt (in F # 3.1). Es ist jedoch einfach, eine Funktion zu implementieren, die im Wesentlichen ein solches Verhalten aufweist. Hier ist eine Beispielimplementierung:

%Vor%     
user3841986 16.09.2014, 19:36
quelle

Tags und Links