terça-feira, 18 de setembro de 2018

Dicas de Programação: Enumeração em Swift

Uma coisa meio estranha no Swift, é que dá para colocar parâmetros dentro das "constantes" enumeradas e trabalhar com elas:

import Foundation

enum Log {
    //Constante debug com um parâmetro String
    case debug(String)
    //Constante warning com um parâmetro String
    case warning(String)
    //Constante error com um parâmetro String
    case error(String)
    //Função do enumerador que escreve no console/terminal
    func write() {
        //Obtém a data atual
        let now = Date()
        switch (self) {
         //Caso o enumerador seja debug 
        case Log.debug(let d):
           //Escreve na tela a data atual, a palavra [DEBUG] e o parâmetro "d" passado na constante
           print("\(now) [DEBUG] \(d)")
        //Caso o enumerador seja warning 
        case Log.warning(let w):
           //Escreve na tela a data atual, a palavra [WARNING] e o parâmetro "w" passado na constante
           print("\(now) [WARNING] \(w)")
        //Caso o enumerador seja error
        case Log.error(let e):
           //Escreve na tela a data atual, a palavra [ERROR] e o parâmetro "e" passado na constante
           print("\(now) [ERROR] \(e)")
        //Caso não seja nenhum deles, dá um erro
        default:
            fatalError("Unsupported")
        }
    }
//Exemplo de uso
Log.error("Ocorreu um erro").write()
Log.warning("Variavel é nula, utilizando valor 0 como default").write()
let pi = 3.14
Log.debug("Valor da constante pi=\(pi)").write()

Bizarro, não?

Até mais!

Nenhum comentário: