swift

Programação Swift: Controlo de fluxo, funções e extensões

Estamos a desenvolver um pequeno curso de iniciação à programação em Swift, utilizada nos dispositivos da Apple e no artigo anterior escrevemos sobre variáveis, conteúdo que pode consultar aqui. No artigo de hoje vamos avanças um pouco mais e falar de controlo de fluxo, funções e extensões.

Este artigo fala sobre controlos de fluxo como os conhecidos de outras linguagens, if´s, for´s, while´s, foreach entre outros, utilização de funções em swift (criar e utilizar) e de extensões para adicionar funcionalidades a classes já existentes ou criadas por nós.

NOTA : Na versão 2.0 da linguagem, a função println deixou de existir. Passa a ser somente print. A razão de não ter mudado o código para a versão 2.0 é precisamente para se ter a noção que estes pormenores estão constantemente a mudar pois esta, não é uma linguagem muito madura.

 

Controlo de fluxo

Vamos começar por onde terminamos. No ultimo artigo, exemplifiquei a utilização de arrays e dicionários. No próximo exemplo demonstra a utilização de um ciclo for para iterar sobre um array de Strings criado anteriormente.

let nomes = ["Diogo","João","Tiago","Tomás]
for n in nomes {
 println(n)
}

 

No anterior código revemos o que foi já demonstrado no anterior artigo sobre variáveis, a declaração de um array. Seguidamente é feito um normalíssimo ciclo for para iterar sobre cada elemento do array.

O ciclo é composto por uma variável (n) que vai a cada iteração conter o valor do índice (começa no 0) do array.

Este método de iterar o array seria igual a:

for (var i = 0; i < nomes.count; i++) {
 println(nomes[i])
}

Para iterar um dictionary a sintaxe é um pouco diferente.

for (key,value) in idade{
//Imprime o par chave-valor
    println("chave: \(key) --  valor: \(value)")
}

O anterior exemplo iria imprimir o índice do array dado pela variável i declarada no ciclo for. Mete-se também no exemplo anterior um método que devolve o tamanho do array(count).

Podemos com a mesma filosofia utilizar o ciclo while para iterar o array.

var i = 0
while (i < nomes.count){
    println(nomes[i])
    i++
}

Utilizamos também para controlar o fluxo do código o if.

let swift = true
if (swift){
    println("Swift power")
}else if(!swift){
    println("Muda para Swift")
}

Ou podemos também utilizar o do while. A grande diferença é que este ciclo é sempre corrido pelo menos uma vez ao contrário do ciclo while.

do{
    i++
}while(i < nomes.count)

Temos também disponível o switch. Um switch é na sua essência uma sequência de if´s.

var linguagem = "swift"
switch (linguagem){
    case "c","c#":
        println("Quero algo da apple")
        break;
    case "objective-c":
        println("Já é apple. Mas quero swift")
        break;
    case "swift":
        println("Vamos começar a programar")
        break;
    default:
        break;
}

A sintaxe é muito parecida a outra linguagens de programação. Podemos como demonstrado no primeiro case especificar duas opções. O swift tem SEMPRE de ter um caso default.

Funções

A criação de funções é bastante simples. Para isso utilizamos a palavra func seguida do nome da função. No seguinte exemplo é criada a função swiftingPt sem argumentos e que não devolve nenhum valor, somente imprime a mensagem “Estou dentro da função”.

func swiftingPt(){
 println("Estou dentro da função")
}

A próxima função aceita como argumento uma string que representa um dia da semana.

func swiftingPt(diaSemana: String){
 println("Estou dentro da função e hoje é "+diaSemana)
}

Como ultimo exemplo de declaração de funções falta só uma função que retorne alguma coisa.

func swiftingPt() -> String{
return "É um bom dia para programar "
}

Para utilizar a anterior função é igual a outras linguagens.

println(swiftingPt())
//imprime "É um bom dia para programar"

Extensões

As extensões em swift servem para adicionar funcionalidades de uma forma organizada a classesenumeradores ou estruturas.

No próximo exemplo é criada uma extensão para o tipo de variáveis do tipo String.

extension String{
    var welcome: String {return self + "Bem vindo ao swift"}
    var goodBye: String {return self + "Volta sempre e... Keep on swifting"}
}

A partir de agora todas as variáveis do tipo String podem ter duas extensões:

  • welcome – Retorna a variável declarada e o texto “Bem vindo ao swift”
  • goodBye –  Retorna a variável declarada e o texto “Volta sempre e… Keep on swifting”

Um exemplo de utilização seria.

var pessoa = "João ".welcome
println("\(pessoa)")   //João Bem vindo ao swift
pessoa = "João ".goodBye
println("\(pessoa)") //João Volta sempre e... Keep on swifting

Esta é uma simples extensão que demonstra o poder das extensões. Com o tempo e a prática vão achar esta funcionalidade muito útil.

Por hoje é tudo. No próximo artigo vamos criar um projeto do zero.

Qualquer dúvida deixem nos comentários que ficarei contente por esclarecer.

Fonte das imagens

Diogo Aleixo

Engenheiro informático apaixonado por Redes de telecomunicações, sistemas Linux, Unix, Windows e embebidos. Adoro programar para dispositivos móveis e para a internet das coisas.

You May Also Like

Pokémon está aí, com novos jogos de perder a cabeça

Inteligência Artificial: Diagnosticar cancro na pele

Call of Duty no telemóvel. Interessado?

Google Maps ou Waze? Como ver o transito em tempo real

Este portal utiliza cookies. Ao navegar no site estará a consentir a sua utilização Saiba mais sobre privacidade e cookies