Question

J'apprends F #. J'ai commencé par la recherche sur le F # échantillons de Microsoft.

Je couru à travers cette déclaration:

let line1,line2 = 
    use sr = System.IO.File.OpenText @"test.txt"
    let line1 = sr.ReadLine() 
    let line2 = sr.ReadLine() 
    (line1,line2)

Quelqu'un peut-il expliquer cette déclaration à moi?

Quel type est en cours de définition ici? Une fonction? Un tuple?

Pourquoi et line1 doivent être line2 redéfini dans la définition de line1,line2 (... let line1 = let line2 =)?

Ce qui est avec la dernière ligne, et comment (line1, line2) ce lien dans le type de la définition originale? Est-ce le retour de la fonction?

est « déclaration », même le mot à utiliser pour une définition dans F #?

Merci.

Était-ce utile?

La solution

La forme générale de la liaison valeurs d'identificateur en F # est

let pattern = expression

Dans ce cas, le modèle est "ligne1, ligne2", qui est un tuple modèle, il s'attendre à se lier à un 2-tuple de valeurs et d'attribuer les noms « line1 » et « line2 » à ces deux valeurs.

expression les 4 lignes suivantes. A l'intérieur cette expression il y a des variables locales. Ils arrivent aussi être nommé « ligne1 » et « LINE2 », mais ils pourraient facilement ont été renommés « x » et « y » ou autre - la portée de ces identifiants est local à cette expression dentelée. (Le fait que les mêmes noms sont utilisés comme noms dans le champ extérieur n'a pas d'effet dans la mesure où le compilateur est concerné.)

La dernière ligne si l'expression est la « valeur de retour » de l'expression. Dans ce cas, il renvoie le 2-tuple de valeurs « ligne1 » et « line2 » (si vous les renommer pour la clarté de l'exposition ou « x » et « y »). Par ailleurs, étant donné que ces deux valeurs ont chacun de type « chaîne », le type de l'expression de retour est « string * », qui est un 2-tuple où chaque valeur est une chaîne. Cela signifie que l'original « ligne1 » et les noms « line2 » sur la première ligne seront chacun inférée à avoir le type « string ».

F # est fonctionnel, et donc dans un sens « tout est une expression » et « il n'y a pas de déclarations » (seules les séquences d'expressions qui sont successivement évalués), mais il est correct de l'OMI à (ab) utiliser le terme « déclaration »pour décrire l'intérieur « nous » lignes, à moins que vous essayez d'être très précis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top