Entrevista - 10 perguntas sobre Swift. Parte 1

Saudação, Khabrovites! Maio terminou e continuamos a lançar novos cursos. Este artigo é dedicado ao início do curso "iOS-developer" . O treinamento começará em 28 de maio e, até então, você terá a oportunidade de aprender mais sobre o idioma Swift e seus recursos. Este é o primeiro artigo de três, em que em um formato de entrevista são examinadas as vantagens e os recursos da linguagem Swift, nos quais ensinamos como criar aplicativos iOS em nossos cursos.




O que é o Swift e para que serve?


Swift é uma linguagem de programação universal e de múltiplos paradigmas, desenvolvida pela Apple para desenvolver soluções para iOS, macOS, watchOS, tvOS e até Linux.

  • Legibilidade - O Swift possui uma sintaxe muito limpa e simples, fácil de escrever e ler.
  • Suporte fácil - a saída é muito menos código e níveis de herança, e todo o projeto se transforma em um único arquivo rápido.
  • Plataforma segura - compile e corrija erros enquanto escreve código.
  • Alta velocidade - um compilador LLVM incrivelmente rápido e eficiente converte o código Swift em código nativo para aproveitar ao máximo os dispositivos. A própria sintaxe e a biblioteca padrão também são otimizadas para um trabalho rápido.
  • Suporte para bibliotecas dinâmicas .
  • Código aberto .

Qual é a diferença entre classe e estrutura?


Existem quatro principais diferenças entre classe e estrutura no Swift. As classes têm alguns recursos que as estruturas não têm:

  • Conversão de tipo - permite verificar e interpretar classes em tempo de execução.
  • Contagem de links - permite usar mais de um link para cada instância da classe.
  • Herança - permite que uma classe herde as características de outra.
  • Desinicializadores - permitem que cada instância de uma classe libere todos os recursos atribuídos a ela.

Quando as estruturas são passadas no código, elas sempre são copiadas sem contagem de referência. Instâncias da estrutura são sempre passadas por valor e instâncias da classe são sempre por referência.

Em quais casos usar uma classe e em qual estrutura?


Como uma folha de dicas simples: Estruturas devem ser usadas quando uma ou mais das seguintes condições for verdadeira.

  • O objetivo da estrutura é encapsular vários valores de dados relativamente simples;
  • Pode-se esperar que os valores encapsulados sejam copiados, não referenciados;
  • As propriedades armazenadas na estrutura são os próprios tipos de valores que também são copiados, não referenciados;
  • Uma estrutura não deve herdar as propriedades e o comportamento de outro tipo existente.

Em outros casos, use classes: defina uma classe, crie uma instância para gerenciar e passar por referência.

Como passar variáveis ​​como links?


Uma variável pode ser passada como referência usando o parâmetro inout . Inout significa que alterar uma variável local também alterará os parâmetros passados.

var value: String = “Applefunc changeString(newValue:inout String) { newValue = “Samsungprint(newValue) // Output:Samsung print(value) // Output:Samsung } changeString(newValue:&value) 


O que é um módulo?


  • Um módulo é uma unidade separada na distribuição de código;
  • Uma plataforma ou aplicativo que é criado e distribuído como uma unidade separada e pode ser importado por outro módulo;
  • Cada objetivo de construção - um pacote ou estrutura de aplicativo no Xcode é considerado como um módulo separado.

Qual é a diferença nos níveis de acesso no Swift?


O Swift possui cinco níveis de acesso diferentes para entidades no código:

  • Acesso aberto - as classes com acesso aberto podem ser subclasses ou ser substituídas por subclasses no módulo em que estão definidas ou em qualquer outra que importe o módulo em que estão definidas;
  • Acesso público - as classes com acesso público podem ser subclasses ou ser substituídas por subclasses apenas dentro do módulo em que são definidas;
  • Acesso interno - entidades podem ser usadas em qualquer arquivo de origem do módulo de definição, mas não no arquivo de origem fora deste módulo;
  • Acesso privado a arquivos - o uso de entidades é limitado por seu próprio arquivo de origem definidor;
  • Acesso privado - o uso de entidades é limitado pela declaração anexada e pelas extensões desta declaração, que estão no mesmo arquivo.

O acesso aberto é o nível mais alto e menos restrito, e o acesso privado é o mais baixo e, consequentemente, o mais limitado. Por padrão, todas as entidades no código têm um nível de acesso interno.

O que é inicialização atrasada?


A inicialização atrasada é a técnica de atrasar a criação de um objeto ou a execução de outro processo até que esse processo se torne necessário. O atraso só pode ser usado com classes e estruturas. No entanto, deve-se entender que a propriedade lenta não é segura, porque não é inicializada automaticamente.

Você sempre precisa declarar a propriedade preguiçosa como uma variável usando var . As propriedades das constantes sempre devem ter um valor antes da conclusão da inicialização, para que não possam ser atrasadas.

O que é uma tupla?


Uma tupla é um grupo de zero ou mais valores representados como um único valor. Eles são comumente usados ​​para retornar vários valores de uma função de chamada. Swift tem dois tipos de tuplas.

Nome carreata

 let nameAndAge = (name:”Midhun”, age:7) Access the values like: nameAndAge.name //Output: Midhun nameAndAge.age //Output: 7 


Carreata sem nome
Nesse tipo de tupla, não especificamos nomes para os elementos.

 let nameAndAge = (“Midhun”, 7) Access the values like: nameAndAge.0 //Output: Midhun nameAndAge.1 //Output: 7 


O que são transferências?


Usando a enumeração, é determinado um tipo comum para um grupo de valores relacionados e a capacidade de trabalhar com segurança com esses valores no código é fornecida. Ao contrário de C e Objective-C, no Swift, as enumerações não recebem padrões de número inteiro quando criadas.

Quais são os valores relacionados?


Os valores associados são muito semelhantes às variáveis ​​associadas a um dos casos de enumeração.

 enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } 


Determinamos o tipo de enumeração de código de barras , que pode assumir o valor upc com o valor associado do tipo (Int, Int, Int, Int) ou o valor qrCode com o valor associado do tipo String .

Às vezes, a capacidade de armazenar valores relacionados de outros tipos ao lado de valores de caso pode ser útil. Isso permite que você armazene informações adicionais do usuário junto com o valor do caso e permite que você altere essas informações sempre que usar esse caso no código.

O fim da primeira parte.
A segunda parte.

Convidamos todos a participar de um seminário on-line gratuito , onde informaremos o que este curso ensinará.

Source: https://habr.com/ru/post/pt451854/


All Articles