
Oi, habrozhiteli! A linguagem rápida é jovem, cresce, desenvolve e muda, embora as abordagens básicas de programação e desenvolvimento já tenham sido formadas. Na nova quinta edição do livro, a primeira parte do livro foi completamente revisada, o que torna o conhecimento da linguagem Swift mais confortável e o texto inteiro é atualizado de acordo com as capacidades do Swift 5. Durante uma comunicação longa e proveitosa com os leitores, surgiram muitas idéias, graças às quais a nova edição se tornou materiais educacionais ainda mais úteis e ricos. Agora você não apenas aprenderá o Swift, mas também obterá informações iniciais sobre os princípios do desenvolvimento de aplicativos completos. O mundo do Swift está mudando constantemente, pessoas com um estoque significativo de conhecimento e experiência ainda não existem devido à idade do idioma, para que você possa se tornar um dos primeiros especialistas.
Trecho. Capítulo 6. Tuplas
Você pode nunca ter encontrado um conceito como tuplas na programação; no entanto, esse é um dos recursos muito úteis disponíveis no Swift. Tuplas, por exemplo, podem ser usadas para trabalhar com coordenadas. Concordo, é muito mais conveniente manejar uma construção (x, y, z) escrita em uma variável do que criar uma variável separada para cada eixo de coordenadas.
6.1 Noções básicas de tupla
Uma tupla é um objeto que agrupa valores de vários tipos em um único valor composto.
As tuplas são a maneira mais fácil de o Swift combinar valores de tipos arbitrários. Cada valor individual na tupla pode ter seu próprio tipo de dados, o que não depende de outros de forma alguma.
Motorcade literal
Uma tupla pode ser criada usando o
literal da
tupla .
Sintaxe
(_1, _2, ..., _N)
• value: Qualquer - o próximo valor de um tipo de dados arbitrário, incluído na tupla.
O literal da tupla retorna o valor definido nele como uma tupla. Um literal é cercado por parênteses e consiste em um conjunto de valores independentes, separados por vírgulas. O número de elementos pode ser arbitrário, mas não é recomendável usar mais de sete.
NOTA
Mais adiante, ao longo do texto, haverá um grande número de blocos de sintaxe. Eles descrevem como as construções em questão podem ser usadas em programas reais. Antes de prosseguir para esses blocos, é necessário descrever a estrutura desse bloco, bem como os elementos utilizados.
A primeira linha sempre determinará diretamente a própria sintaxe que descreve o uso da construção no código do programa. Nesse caso, elementos condicionais podem ser usados (por exemplo, valor_1, valor_2 e valor_N na sintaxe acima). Geralmente eles são escritos na forma de texto para entender sua finalidade.
Descrições detalhadas de elementos condicionais podem ser seguidas. Em alguns casos, os elementos podem ser agrupados (como na sintaxe acima, onde, em vez dos elementos valor_1, valor_2, etc., é descrito um valor do elemento, cujos requisitos se aplicam a todos os elementos com um nome determinado).
Após o nome do elemento condicional, seu tipo de dados pode ser indicado. Além disso, se um valor específico de um determinado tipo (por exemplo, string, numérico, lógico, etc.) for usado como um elemento, o tipo será separado por dois pontos (:). Se, no entanto, uma expressão puder ser usada como um elemento (por exemplo, a + b ou r> 100), o tipo será indicado após o traço e o colchete angular representando a seta (->). Pode ser definido como um (por exemplo, Int) e muitos tipos de dados (por exemplo, Int, String).
A sintaxe acima usa Qualquer como um ponteiro para um tipo de dados. Qualquer significa qualquer tipo de dados. No processo de aprendizado, você encontrará mais e mais tipos que podem ser especificados neste bloco de sintaxe.
Uma descrição detalhada da sintaxe, bem como um exemplo de seu uso, podem ser seguidos.
Aconselho que você marque esta página como favorita, se necessário
volte sempre aqui.
Uma tupla é armazenada em variáveis e constantes da mesma maneira que valores de tipos de dados fundamentais.
Sintaxe
let = (_1, _2, ..., _N) var = (_1, _2, ..., _N)
Declarando uma variável e uma constante e inicializando-a com uma tupla literal que consiste em N elementos como um valor. Para escrever uma tupla em uma variável, você deve usar a instrução var e, para escrever em uma constante, você deve usar a instrução let.
Considere o seguinte exemplo. Declaramos uma constante e a inicializamos com uma tupla composta por três elementos de tipo: Int, String e Bool (Listagem 6.1).
Listagem 6.1
let myProgramStatus = (200, "In Work", true) myProgramStatus
Neste exemplo, myProgramStatus é uma constante que contém uma tupla como um valor que descreve o status de um determinado programa e consiste em três elementos:
- 200 - inteiro do tipo Int, código de status do programa;
- “No trabalho” - uma string literal do tipo String, uma descrição textual do estado do programa;
- true - um valor lógico do tipo Bool, a capacidade de continuar a operação do programa.
Essa tupla agrupa os valores de três tipos de dados diferentes em uma única constante inicializada.
Tipo de dados da tupla
Mas se uma tupla agrupa os valores de vários tipos de dados em um, então qual é o tipo de dados da própria tupla e o parâmetro que armazena seu valor?
Um tipo de dados de tupla é uma sequência fixa e ordenada de nomes de tipos de dados para elementos de tupla.
Sintaxe
(____1, ____2, ..., ____N)
O tipo de dados está entre parênteses e os nomes dos tipos de elementos são separados por vírgulas. A ordem dos nomes dos tipos deve necessariamente corresponder à ordem dos elementos na tupla.
Exemplo
(Int, Int, Double)
O tipo de dados da tupla myProgramStatus da Listagem 6.1 é (Int, String, Bool). O tipo de dados é definido implicitamente, pois é determinado automaticamente com base nos elementos da tupla. Como a ordem de especificação dos tipos de dados deve corresponder à ordem dos elementos na tupla, o tipo (Bool, String, Int) é diferente de (Int, String, Bool).
A Listagem 6.2 compara os tipos de dados das várias tuplas.
Listagem 6.2
var tuple1 = (200, "In Work", true) var tuple2 = (true, "On Work", 200) print( type(of:tuple1) == type(of:tuple2) )
Console
false
Para comparar os tipos de dados das tuplas, são utilizados os valores retornados pelo tipo de função global (de :), que determina o tipo do objeto passado para ele.
Suponha que na tupla myProgramStatus, o primeiro elemento seja um valor flutuante em vez de um número inteiro. Nesse caso, você pode determinar explicitamente o tipo de dados da tupla (dois pontos após o nome do parâmetro) (Listagem 6.3).
Listagem 6.3
Você não está limitado a nenhum número específico de elementos da tupla. Uma tupla pode conter quantos elementos forem necessários (mas lembre-se de que não é recomendável usar mais de sete elementos). A Listagem 6.4 mostra um exemplo de criação de uma tupla de quatro elementos do mesmo tipo. Ele usa um alias do tipo de dados Int, que não é proibido.
Listagem 6.4
6.2 Interação com elementos de tupla
Uma tupla é destinada não apenas para definir e armazenar um determinado conjunto de valores, mas também para interagir com esses valores. Nesta seção, discutiremos como interagir com os valores dos elementos da tupla.
Inicialização de valores para parâmetros
Você pode declarar novos parâmetros com uma expressão e inicializar os valores de todos os elementos da tupla neles. Para fazer isso, após a palavra-chave var (ou deixe, se você declarar constantes) entre colchetes e vírgula, você deve especificar os nomes dos novos parâmetros e, após o operador de inicialização, passar a tupla. Observe que o número de parâmetros declarados deve corresponder ao número de elementos da tupla (Listagem 6.5).
Listagem 6.5
Console:
— 200 — In Work — true
Usando essa sintaxe, você pode inicializar facilmente valores arbitrários para vários parâmetros ao mesmo tempo. Para fazer isso, no lado direito da expressão, após o operador de inicialização, é necessário passar não o parâmetro que contém a tupla, mas a literal da tupla (Listagem 6.6).
Listagem 6.6
var (myName, myAge) = ("", 140)
Console:
, 140
As variáveis myName e myAge são inicializadas com os valores correspondentes dos elementos da tupla (Troll, 140). Usando essa sintaxe, você pode ignorar elementos de tupla arbitrários. Para fazer isso, você deve especificar o caractere sublinhado como o nome da variável correspondente ao elemento a ser ignorado (Listagem 6.7).
Listagem 6.7
var (statusCode, _, _) = myProgramStatus
Como resultado, o valor do primeiro elemento da tupla, myProgramStatus, é gravado na variável statusCode. Outros valores serão ignorados.
NOTA
O sublinhado em Swift indica ignorando o parâmetro. Este não é o único exemplo em que pode ser usado. No futuro, ao estudar o material do livro, você o encontrará mais de uma vez.
Acesse elementos de tupla através de índices
Cada elemento da tupla, além do valor, contém um índice inteiro que pode ser usado para acessar esse elemento. Os índices são sempre organizados em ordem, começando do zero. Assim, em uma tupla de N elementos, o índice do primeiro elemento será 0 e o último pode ser acessado usando o índice N-1.
Ao acessar um único elemento, o índice é indicado através do ponto após o nome do parâmetro no qual a tupla está armazenada. A Listagem 6.8 mostra um exemplo de acesso aos elementos individuais de uma tupla.
Listagem 6.8
Console:
— 200 — In Work — true
Acessar elementos da tupla através de nomes
Além do índice, cada elemento da tupla pode receber um nome exclusivo. Os nomes dos elementos não são necessários e são usados apenas para a conveniência de usar tuplas. Os nomes podem ser atribuídos a todos e a partes dos elementos. O nome do elemento pode ser definido na literal da tupla e definindo explicitamente seu tipo.
A Listagem 6.9 mostra um exemplo de determinação dos nomes dos elementos da tupla por meio de um literal.
Listagem 6.9
let statusTuple = (statusCode: 200, statusText: "In Work", statusConnect: true)
Os nomes dos elementos especificados podem ser usados para obter os valores desses elementos. Nesse caso, a mesma sintaxe é usada no acesso através de índices, quando o índice foi especificado através do ponto após o nome do parâmetro. Definir nomes não impede que você use índices. Os índices em uma tupla sempre podem ser usados.
A Listagem 6.10 mostra como os nomes dos elementos são usados em conjunto com os índices.
Listagem 6.10
Console:
— 200 — In Work — true
O acesso a elementos usando nomes é mais conveniente e visual do que o acesso por índices.
Conforme mencionado anteriormente, os nomes dos elementos podem ser especificados não apenas no literal da tupla, mas também ao determinar explicitamente o tipo de dados. A Listagem 6.11 mostra o exemplo correspondente.
Listagem 6.11
let anotherStatusTuple: (statusCode: Int, statusText: String, statusConnect: Bool) = (200, "In Work", true)
Edição de tupla
Para tuplas do mesmo tipo, a operação de inicializar o valor de uma tupla em outra pode ser executada. Considere o exemplo na Listagem 6.12.
Listagem 6.12
var myFirstTuple: (Int, String) = (0, "0") var mySecondTuple = (100, "")
As tuplas myFirstTuple e mySecondTuple têm o mesmo tipo de dados, portanto, o valor de um pode ser inicializado em outro. O primeiro tipo é definido explicitamente e o segundo através do valor inicializado.
Índices e nomes podem ser usados para alterar os valores de elementos individuais em uma tupla (Listagem 6.13).
Listagem 6.13
As tuplas são muito difundidas no Swift. Por exemplo, com a ajuda deles, você pode retornar com facilidade não apenas um, mas vários valores de sua função (nos familiarizaremos com as funções um pouco mais tarde).
NOTA
As tuplas não permitem que você crie estruturas de dados complexas, o único objetivo é agrupar um determinado conjunto de parâmetros heterogêneos ou semelhantes e transferi-los para o local desejado. Para criar estruturas complexas, você deve usar as ferramentas de programação orientada a objetos (OOP) e, mais especificamente, classes ou estruturas. Nós os conheceremos mais tarde.
»Mais informações sobre o livro podem ser encontradas no
site do editor»
Conteúdo»
TrechoDesconto de 25% no cupom para Swabbrookers -
SwiftApós o pagamento da versão impressa do livro, um livro eletrônico é enviado por e-mail.