J'ai joué avec la liste F #
module File1
//Essayez d'utiliser une liste
//Déclarer une liste
let strs= ["dogs";"cats";"bird"]
//Essayez de déclarer le format avec printfn
printfn "%A" strs //["dogs"; "cats"; "bird"]Est affiché
printfn "%O" strs //[dogs; cats; bird]Est affiché
//Accéder à la liste en utilisant la correspondance de modèles
//Correspondance de motif 1
let rec accessList strs =
match strs with
|x::xs->printfn "%O " x;printfn "%O " (accessList xs);x+" a"
|[]->printfn "La fin";"b"
//Correspondance de motif 2
let rec accessList2 strs =
match strs with
|x::xs->printf "%O " x; accessList2 xs
|[]->printfn "La fin";
in
//Il y a une valeur de retour, vous devez donc lier le résultat avec let
let a=accessList strs
//dogs
//cats
//bird
//La fin
//b
//bird a
//cats a
//Est affiché
printfn "Afficher le résultat lié par let"
printfn "%s" a
//Afficher le résultat lié par let
//dogs a
//Est affiché
accessList2 strs
//chiens chats oiseau La fin est affichée
Il semble que le résultat de sortie du programme soit vu, et il ressemble à la figure ci-dessous. Si vous partez de la partie correspondante avec [] ->, il peut être plus facile de saisir l'image d'exécution du traitement récursif.
C'est une image qui a à la fois les propriétés de Java List et Deque (Stack). Les listes dans les langages fonctionnels semblaient avoir une opération de liste plus fluide que les listes en Java, mais si elles ont également les propriétés de Deque (Stack), cela peut être naturel.
Recommended Posts