English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operadores de Intervalo (Range) Swift

Neste artigo, você aprenderá sobre Range, tipo e casos de uso no Swift.

Range (intervalo) é o intervalo de valores. Um exemplo simples de intervalo é 0,1、2、3、4、5、6、7、8、9porque os números variam de 0 até9são contínuos.

Podemos usar os dois operadores de intervalo descritos abaixo para criar intervalos rapidamente:

1. operador de intervalo fechado (lowerBound ... upperBound)

Ele inclui todos os valores do intervalo (lowerbound até upperBound). É declarado usando ... (3pontos) operador declara.

Por exemplo: 1...3 Define um intervalo que contém o valor1,2,3o intervalo

2. operador de intervalo semi-aberto (lowerBound .. < upperBound)

Ele inclui todos os valores do intervalo (lowerbound até upperBound), exceto o último (upperBound). É declarado usando o operador ..<.

Por exemplo: 1..<3 definir valores contidos1E2o intervalo

o tipo de intervalo

1.Intervalo fechado (inferiorLimite ... superiorLimite)

O intervalo criado usando o operador de intervalo fechado é chamado de intervalo fechado. Ele inclui todos os valores entre o limite inferior e o limite superior.

Exemplo1:Usar for-no loop para imprimir valores do intervalo fechado

//1... 3definir valores contidos1、2E3o intervalo
for value in 1...3 {
	print(value)
}

Ao executar o programa, a saída é:

1
2
3

O exemplo acima cria um intervalo que contém1até3(1...3) para criar um intervalo que contém-para ver o intervalo contido. Usamos um for-para ver quais valores o intervalo contém. Para obter mais informações sobre o loop forpara obter mais informações sobre o loop for, visite-Swift forno loop

Usar for-no loop, podemos ver que o intervalo fechado contém todos os valores dentro do intervalo dado, incluindo o limite inferior (1) e o limite superior (3)。

2.Intervalo semi-aberto (inferiorLimite .. <superiorLimite)

O intervalo criado usando o operador de intervalo semi-aberto é chamado de intervalo semi-aberto. Ele inclui todos os valores entre o limite inferior e o limite superior, masnão incluio valor limite superior.

Exemplo2:Usar for-no loop para imprimir valores do intervalo semi-aberto

// 1..<3 Definir um intervalo que contém valores 1,2
for value in 1..<3 {
	print(value)
}

Ao executar o programa, a saída é:

1
2

No exemplo acima, usamos for-no loop para ver o funcionamento do intervalo semi-aberto.

Não precisamos imprimir todos os valores, podemos claramente ver que o uso do operador de intervalo semi-aberto imprime apenas1E2E não inclui o valor limite superior (ou seja3).

3.Intervalo unidirecional

Um intervalo unidirecional é um intervalo que é o mais contínuo possível em uma direção. Pode ser criado usando o operador de intervalo semi-aberto e o operador de intervalo fechado, mas os operadores podem ter valor apenas em um lado.

Exemplo3:Intervalo unidirecional menor que2

let range = ..<2
print(range.contains(-1))
print(range.contains(2))

Ao executar o programa, a saída é:

true
false

O exemplo acima usa o operador de intervalo semi-aberto para criar um intervalo unidirecional que contém valores menores que2de qualquer número.

Para verificar nossos resultados, usamos o método contains. Se o elemento estiver dentro do intervalo, o contains retorna true, caso contrário, retorna false.

range.contains(-1) verifica -1 Seu limite superior unidirecional é2 e-1 <2Portanto, ele está dentro do intervalo e a instrução print(range.contains(-1)) é impresso no monitor como true.

Mas, devido ao uso do operador de intervalo semi-aberto, o valor limite superior (2) não está incluído no intervalo. Portanto, range.contains(2) retorna false.

Exemplo4:De2Intervalo unidirecional de início

let range = 2...
print(range.contains(100))
print(range.contains(1))

Ao executar o programa, a saída é:

true
false

O exemplo acima usa o operador de intervalo fechado para criar um intervalo unidirecional, que contém desde}}2até maior2de qualquer valor numérico.

range.contains(10) verificar100 está dentro do intervalo. Devido ao intervalo unidirecional e100 maior2por isso, ele está dentro do intervalo e imprime true na tela.

mas, ele tem valor inferior (2) portanto, range.contains(1) retorna false.

Considerações

  • O ponto de partida do intervalo deve ser menor ou igual ao ponto final. Em nosso exemplo (lowerBound...upperBound), o valor inferior deve ser menor que o valor superior. No entanto, pode ser negativo.
    Por exemplo:

    3...1  // Erro: Não é possível usar upperBound < lowerBound para formar Range
    -3...1 // Este é um intervalo válido. Lowerbound/Upperbound pode conter valores negativos.
  • Podemos usar for-in loop para percorrer todo o intervalo (não inclui o intervalo unidirecional).

  • Podemos usar o operador de intervalo para acessarDo ArrayElemento.