Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse constructo de looping é usado para iterar sobre as correspondências de um padrão em uma coleção enumerável, como uma expressão de intervalo, sequência, lista, matriz ou outro constructo que dá suporte à enumeração.
Sintaxe
for pattern in enumerable-expression do
body-expression
Observações
A for...in expressão pode ser comparada com a instrução for each em outras linguagens .NET porque ela é usada para fazer loop sobre os valores em uma coleção enumerável. No entanto, for...in também dá suporte à correspondência de padrões sobre a coleção em vez de apenas iteração sobre toda a coleção.
A expressão enumerável pode ser especificada como uma coleção enumerável ou usando o .. operador. Coleções enumeráveis incluem listas, sequências, matrizes, conjuntos, mapas e assim por diante. Qualquer tipo que implementa System.Collections.IEnumerable pode ser usado.
Ao expressar um intervalo usando o .. operador, você pode usar a sintaxe a seguir.
inicie .. acabar
Você também pode usar uma versão que inclui um incremento chamado skip, como no código a seguir.
inicie .. ignore .. acabar
Se o valor de ignorar não for especificado, o próximo valor gerado na coleção será incrementado em 1. Quando skip é especificado, ele é incrementado por esse valor.
Os valores correspondentes no padrão também podem ser usados na expressão corporal.
Os exemplos de código a seguir ilustram o uso da for...in expressão.
// Looping over a list.
let list1 = [ 1; 5; 100; 450; 788 ]
for i in list1 do
printfn "%d" i
A saída é a seguinte.
1
5
100
450
788
O exemplo a seguir mostra como fazer loop em uma sequência e como usar um padrão de tupla em vez de uma variável simples. Neste exemplo, a expressão de sequência usa o -> operador, que é uma abreviação em do yield expressões de sequência e outras expressões de computação. O -> operador permite especificar uma expressão cujo valor se torna parte da sequência. Para obter mais informações, consulte Sequências e Expressões de Computação.
let seq1 = seq { for i in 1 .. 10 -> (i, i*i) }
for (a, asqr) in seq1 do
printfn "%d squared is %d" a asqr
A saída é a seguinte.
1 squared is 1
2 squared is 4
3 squared is 9
4 squared is 16
5 squared is 25
6 squared is 36
7 squared is 49
8 squared is 64
9 squared is 81
10 squared is 100
O exemplo a seguir mostra como fazer loop em um intervalo de inteiros simples.
let function1() =
for i in 1 .. 10 do
printf "%d " i
printfn ""
function1()
A saída da função1 é a seguinte.
1 2 3 4 5 6 7 8 9 10
O exemplo a seguir mostra como fazer loop em um intervalo com um salto de 2, que inclui todos os outros elementos do intervalo.
let function2() =
for i in 1 .. 2 .. 10 do
printf "%d " i
printfn ""
function2()
A saída é a function2 seguinte.
1 3 5 7 9
O exemplo a seguir mostra como usar um intervalo de caracteres.
let function3() =
for c in 'a' .. 'z' do
printf "%c " c
printfn ""
function3()
A saída é a function3 seguinte.
a b c d e f g h i j k l m n o p q r s t u v w x y z
O exemplo a seguir mostra como usar um valor de skip negativo para uma iteração inversa.
let function4() =
for i in 10 .. -1 .. 1 do
printf "%d " i
printfn " ... Lift off!"
function4()
A saída é a function4 seguinte.
10 9 8 7 6 5 4 3 2 1 ... Lift off!
O início e o término do intervalo também podem ser expressões, como funções, como no código a seguir.
let beginning x y = x - 2*y
let ending x y = x + 2*y
let function5 x y =
for i in (beginning x y) .. (ending x y) do
printf "%d " i
printfn ""
function5 10 4
A saída dessa function5 entrada é a seguinte.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
O exemplo a seguir mostra o uso de um caractere curinga (_) quando o elemento não é necessário no loop.
let mutable count = 0
for _ in list1 do
count <- count + 1
printfn "Number of elements in list1: %d" count
A saída é a seguinte.
Number of elements in list1: 5
Note Você pode usar for...in em expressões de sequência e outras expressões de computação, nesse caso, uma versão personalizada da for...in expressão é usada. Para obter mais informações, consulte Sequências, expressões assíncronas, expressões de tarefa e expressões de computação.