2009-03-02 7 views

Répondre

0

Je pense qu'il est juste une durée d'efficacité - comme la façon dont vous pouvez toujours appeler un sous ou définir une variable au lieu de simplement faire les choses directement, comme dans:

SET varname = 5 
CALL mysub() 

contre seulement:

varname = 5 
mysub() 

En d'autres termes, je ne pense pas que cela ait de l'importance, et le compilateur l'ignore.

+0

intéressant, mais avez-vous une idée de ce que c'est un holdover? Ce n'est pas comme si F # est une vieille langue – Bob

+0

Comme une supposition complète, comme un marqueur pour les expressions avec effet secondaire comme dans Haskell http://www.zvon.org/other/haskell/Outputsyntax/doQexpressions_reference.html –

+0

@Bob: F # a été autour pendant quelques années, à l'origine comme un projet de Microsoft Research. La langue a changé/simplifié un peu pendant ce temps. – Brian

5

Alors que «faire» était un mot-clé obligatoire dans de nombreux endroits dans la langue de certaines des versions précédentes, aujourd'hui, vous avez rarement besoin de «faire». Les exceptions restantes que je peux penser sont que «faire» fait toujours partie de la syntaxe de la boucle (par exemple «tandis que e1 do e2») et si vous voulez mettre un attribut au niveau de l'assembly ou un attribut sur la méthode de démarrage, vous pouvez mettre l'attribut avant le «do» explicite d'un bloc de code final dans un module. Souvent, dans les échantillons F # vous verrez

[<STAThread>] 
do Application.Run(form) 

que les deux dernières lignes d'un fichier, et je pense que le « faire » est toujours nécessaire là pour pouvoir fixer l'attribut sur la ligne au-dessus .

Questions connexes