Używanie pętli do iterować po instrukcjach
Doszliśmy do punktu w programie, w którym trzeba wykonać grupę instrukcji więcej niż jeden raz. Przyczyną jest to, że masz do czynienia ze strukturą typu listy lub masz ogólną potrzebę powtarzania czegoś do momentu, gdy zostanie spełniony określony warunek. W tym scenariuszu można używać pętli.
Pętle
Pętla iteruje po zakresie wartości. Dla każdej wartości kod robi coś takiego jak drukowanie wyników na ekranie lub używanie wartości w operacji. F# ma trzy typy pętli, których można użyć:
for...in
: Wfor...in
konstrukcji założono, że masz kolekcję, w przypadku których można iterować. Iteruje po każdej wartości w kolekcji.for...to
: pętlafor...to
jest uruchamiana i kończy się w miejscu, w którym ta pętla iteruje. Iteruje do momentu osiągnięcia wartości zmiennej pętli.while...do
: Pętlawhile...do
nie jest wyśrodkowana na kolekcji wyśrodkowalnej jak dwie pierwsze konstrukcje, ale zamiast tego działa w pętli do momentu, gdy warunek zostanie spełniony.
Użyj dla... in loop for every value in a collection (pętla in dla każdej wartości w kolekcji)
Konstrukcja for...in
działa na kolekcji wyejmowalnej. Implementuje i System.Collections.IEnumerable
zawiera listy, sekwencje, tablice i inne typy. Oto składnia pętli for...in
:
for <pattern> in <enumerable-expression> do
<body-expression>
Ważne jest zrozumienie niektórych słów kluczowych:
Wzorzec: wzorcem może być bieżący element lub krotka. Przykładem jest iterowanie po sekwencji. Poniższy kod jest przykładem sytuacji, w których wzorzec jest bieżącą wartością
i
. Iterujefor
po liścielist
, a następnie drukuje każdą wartość w kolekcji:let list = [1; 2; 3; 4; 5] for i in list do printf "%d " i
Wyrażenie-wyliczalne: Wyrażenie wyliczalne jest tym, przez co iterujesz. Może to być lista lub sekwencja.
Wyrażenie-treści: Wyrażenie treści to miejsce, w którym wykonuje się zadanie, takie jak drukowanie lub wykonywanie obliczeń.
Użyj dla... do pętli do momentu wystąpienia zmiennej pętli
Konstrukcja for...to
jest nieco inna niż pętla for...in
. Zmienna for...to
pętli stanowi granicę miejsca, w którym należy zatrzymać iterowanie. Oto jak wygląda składnia:
for <identifier = start> [ to | downto ] <finish> do
<body-expression>
Ważne jest, aby zrozumieć składniki składni:
identifier = start
: ta składnia jest przypisaną. Zazwyczaj decydujesz, którą zmienną chcesz śledzić w ramach iteracji i od jakiej wartości powinna zacząć.[to | downto]
: możesz wybrać jeden z dwóch różnych słów kluczowych.to
oznacza, że pętla iteruje do tej liczby. W przypadku użyciadownto
funkcji wartość identyfikatora zmniejsza się do momentu osiągnięcia tej liczby.
Oto przykład użycia pętli for...to
:
for i = 1 to 10 do
printfn "%i " i // prints 1 2 3 4 5 6 7 8 9 10
Ta pętla drukuje wszystkie wartości z zakresie od 1 do 10, w tym 10. Przyjrzyjmy się przykładowi, który również używa konstrukcji downto
. Ta konstrukcja działa podobnie do to
, ale w odwrotnej kolejności. Poniższy kod pokazuje, jak zamiast tego można drukować liczby od 10 do 1:
for i = 10 downto 1 do
printfn "%i" i // prints 10 9 8 7 6 5 4 3 2 1
Użyj chwilę... pętla "do" do momentu, gdy warunek zostanie spełniony
Konstrukcja while...do
różni się od konstrukcji for...in
i for...to
. while...do
nie iteruje po kolekcji. Zamiast tego należy użyć pętli while...do
, jeśli masz logikę, która musi pętlować do momentu, gdy warunek zostanie spełniony. Przykładem jest akceptowanie argumentów wiersza polecenia do momentu zamknięcia aplikacji przez użytkownika.
Ten kod przedstawia składnię konstrukcji while...do
:
while <test-expression> do
<body-expression>
Gra zgadywanie jest przykładem użycia konstrukcji while...do
:
let mutable quit = false
let no = 11
while not quit do
printf "Guess a number: "
let guess = Console.ReadLine()
let guessNo = int guess
if guessNo = no then
quit <- true
printfn "You guessed correctly %i is the secret number" no
else
printfn "%i is incorrect" guessNo
Kod wykonuje zestaw instrukcji , dopóki zmienna nie quit
ma wartości true
. Po ustawieniu wartości dla na quit
true
, gdy użytkownik zgadnie poprawnie, pętla kończy się.
Potrzebujesz pomocy? Zobacz nasz przewodnik po rozwiązywaniu problemów lub prześlij szczegółową opinię, zgłaszając problem.