Swift a nova linguagem da Apple

Se você é desenvolvedor Apple já deve saber que uma nova linguagem de programação foi lançada no último WWDC 14, Swift é nome dela.

Até a versão do iOS 7 a linguagem utilizada oficialmente era o Objective-C que sempre foi um degrau mais alto na escalada pela proficiência, tanto para o desenvolvedor que vinha de outras linguagens quanto para os iniciantes no mundo de programação. A partir do iOS 8 as aplicações poderão ser desenvolvidas com Objective-C e Swift, inclusive com as duas no mesmo projeto.

A tendência é que o Swift atraia mais desenvolvedores por sua facilidade e semelhança com outras linguagens. Nesse artigo vamos focar nos conceitos iniciais dessa nova linguagem.

Definição de variáveis e constantes

Quando se aprende uma nova linguagem o primeiro passo normalmente a ser dado é a definição de uma variável. No Swift não será diferente, observe o exemplo:


 var nome = "Fábio"

O primeiro detalhe de certa forma comum nas linguagens mais recentes é a ausência do ponto e vírgula, ele é opcional para a linguagem.

Perceba que não foi necessário a declaração do tipo String, isso porque o compilador infere o tipo após a atribuição. A declaração acima tem os mesmos efeitos práticos da seguinte:


var nome: String = "Fábio"

Dessa maneira o código abaixo nem compila, pois a linguagem possui uma tipagem estática.


var nome = "Fábio"
nome = 10 // Não compila pois nome é String, já que esse tipo foi inferido da linha anterior

A palavra var antes do nome indica que podemos mudar o nome para outra String, ou seja é uma variável e o código a seguir é válido:


var nome = "Fábio"
nome = "Zico"

Caso uma alteração não fosse permitida, deveríamos declarar uma constante usando let.


let nome = "Fábio"
nome = "Zico" // Não compila pois nome é constante

Trabalhando com classes

Por ser uma linguagem que segue o paradigma da Orientação de Objetos, saber a definir uma classe é imprescindível.

No Swift, diferentemente do Objective-C que usa um arquivo de definições(.h) e outro de implementações(.m), usa-se um único arquivo(.swift) para a definição de uma classe.
Veja abaixo o exemplo:
Veiculo.swift


class Veiculo{
   var ano: Int 

}

Com o código anterior, definimos um Veiculo que possui um atributo ano.

Mas da maneira como declaramos algumas informações ainda são necessárias para a classe compilar:

1)Declaração de construtor;
2)Inicialização de atributos;

Veiculo.swift


class Veiculo{
   var ano: Int
   var valor: Double = 20_000.0

   //construtor
   init(){
      self.ano = 2014
   }
}

Perceba que o atributo ano foi inciado no construtor e o atributor valor, novo atributo, foi inicializado fora. Sem problemas, podemos iniciar das duas formas. Essa exigência de iniciar o valor acontece pois não existe um valor default para os tipos. Outro ponto a ser notado é na declaração do valor que foi usado underscore para uma melhor legibilidade. Nada impede também de usar o literal como de costume: 20000.0;

Modificadores de acesso

Talvez você tenha percebido que estamos acessando direto o atributo, e essa falta de encapsulamento não é mais necessária com a chegada dos modificadores de acesso a partir do Xcode 6 beta 4.

Existem 3 modificadores por ordem de menos restritivo ao mais restritivo: public, internal e private. Sendo que o default é ser internal ao módulo/framework ou app/projeto.


class Veiculo{
    private var ano: Int
    private var valor: Double = 20_000.0

    //construtor
    init(){
        self.ano = 2014
    }
}

Instanciando Objetos

Definido os princípios básicos do use de classe no Swift, vemos a necessidade de instanciação dos objetos.


var fusca = Veiculo()  //ou var fusca: Veiculo = Veiculo()

Ao contrário do que era feito no Objective-c, com duas chamadas de método(alloc e init), aqui usa-se apenas o nome do tipo e parênteses.

Definindo comportamentos

Uma classe também possui comportamentos e damos essas características através dos métodos que no Swift são declarados como funções(é possível ter funções sem uso de classes).


class Veiculo{
   private var ano: Int
   private var valor: Double = 20_000.0
   
   //… construtor omitido
   
   func calculaIPVA() -> Double{
      return self.valor * 0.05 
   }
}

No exemplo anterior, foi definido um método cujo nome é calculaIPVA e retorna um Double além de não receber nenhum parâmetro. O seu uso se daria da seguinte forma:


 var fusca = Veiculo()
 var valorDoIpva = fusca.calculaIPVA()

Em métodos que possuem parâmetros teremos a sintaxe a seguir:

   
class Veiculo{
   private var ano: Int
   private var valor: Double = 20_000.0
   //… construtor omitido
   func calculaIPVA() -> Double{
      return self.valor * 0.05
   }
   func calculaDepreciacaoParaAno(ano: Int, comTaxa taxaDeDepreciacao: Double)->                                                       Double{ 
   //lógica omitida   
  } 
}

Perceba que no método calculaDepreciacaoParaAno temos dois parâmetros e no que se refere a taxa foi usado o conceito de External Parameter Name, para que fique mais descritivo. Não é obrigatório nomear o parâmetro como fizemos ao declarar o comTaxa, mas é um recomendação para uma melhoria da legibilidade, principalmente com métodos que recebem vários parâmetros.
O uso desse método ficaria como a seguir:


var fusca = Veiculo()
var valorDoIpva = fusca.calculaIPVA()
fusca.calculaDepreciacaoParaAno(2020, comTaxa: 0.12)

Explorando o Swift

Para os testes anteriores é necessário ter o Xcode 6.

Utilize um projeto Playground, que como o próprio nome diz é o seu ambiente de diversão/exploração da linguagem e permite uma interatividade com aparência de linguagem de script, embora Swift seja compilado.

Swift e Objective-C

É importante saber que a comunicação entre Swift e Objective-C é bem transparente e de certa forma até intuitiva.
De forma que pode-se usar uma aplicação com as duas linguagens nessa fase transitória.
A comunicação não é o foco desse artigo, mas se ficou curioso sugiro que acesse essa documentação : Swift and Objective-C in the Same Project

Conclusão

Uma nova porta está aberta aos desenvolvedores que ainda não entraram no mundo iOS.
Swift tem tudo para se tornar em um futuro próximo a linguagem dominante no mercado Apple.
Para um aprofundamento nos estudos acesse a documentação oficial da linguagem: Swift Programming Language.

13 Comentários

  1. Vanderson Assis 07/10/2014 at 11:56 #

    A sintaxe é muito parecida com javascript.

  2. Jakson Marques 10/10/2014 at 10:16 #

    Para desenvolver em Swift é necessário eu usar um computador com OS da Apple ??? Ou posso usar o xcode em um PC com Windows ???

  3. Anderson Paiva 10/10/2014 at 10:20 #

    Orientação a Objeto, agora sim “falou a minha língua”

  4. Paulo Augusto 10/10/2014 at 10:27 #

    Bom dia, gostaria de saber se eu consigo criar uma máquina virtual no windows 8 para testar a linguagem de programação SWIFT? Se sim, poderia indicar algum tutorial?

    Agradeço a atenção e a ajuda.

    Atenciosamente,

  5. Eric Frata 10/10/2014 at 10:42 #

    Achei tbm que é mtoo próximo ao Javascript..

  6. Julio Santana 10/10/2014 at 11:23 #

    Muito bom! Parece realmente javascript, apesar de ser compilada…creio que a curva de aprendizado deverá ser menor para todos. Obrigado pelo post!

  7. fabio.pimentel 11/10/2014 at 03:33 #

    Oi Julio,
    a curva de aprendizado realmente é menor que ObjC. Mas Swift tem suas particularidades tb e é bastante poderosa como linguagem.

  8. fabio.pimentel 11/10/2014 at 03:35 #

    Oi Paulo,
    eu não conheço nenhum tutorial para auxiliá-lo sem uma máquina Apple.
    Talvez você ache alguma iso na internet.

    Abraços

  9. fabio.pimentel 11/10/2014 at 03:37 #

    Oi Jakson,
    infelizmente esse é ainda uma barreira. A IDE(Xcode) só funciona em Mac OS.

  10. Henrique Luz 11/10/2014 at 08:57 #

    Oi, Fábio.
    Você poderia postar futuramente sobre algumas vantagens de usar Swift em relação a Objective-C.

  11. João Santanna 07/11/2014 at 00:44 #

    Galera,

    fizeram uma ferramenta web na qual você pode codificar em swift e testar seus programas, ideia para quem não tem um mac e quer aprender a linguagem. O endereço para a ferramenta é o seguinte:
    http://swiftstub.com

    você pode codificar , testar e baixar os arquivos , dessa forma você já vai ganhando tempo aprendendo a linguagem enquanto não tem um mac … e como é web roda tanto no win quanto no linux!

    enjoy!

  12. Paulo Silveira 07/11/2014 at 01:40 #

    parabens pela iniciativa Joao Santanna!!!!

  13. Andre 05/02/2015 at 10:59 #

    Muito boa a explicação, a linguagem é semelhante ao JavaScript

Deixe uma resposta