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 classes, enumeradores 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.