Trabalhando com uma função dentro de uma Swift enumeração

Com o mesmo código básico, você pode adicionar uma função para uma enumeração na Swift. Isso é algo que você não tenha visto em C e talvez não em outros idiomas também. É uma nova maneira de olhar para enumerações.

Adicionando uma função simples para uma enumeração

Aqui é a função que é adicionado à enumeração. Você pode colocá-lo em qualquer lugar (exceto, é claro, não no meio do caso):

 func enumFunction () -> Int {return -17}

A função é chamada enumFunction e ele retorna um int com o valor de -17. Pode aceder a esta função a partir de qualquer instância da enumeração. Aqui está um exemplo:

deixe i = Place.bars.enumFunction ()

Você pode estar pensando, # 147 Espere um momento. Essa enumeração é digitado como de Cordas e por isso deve retornar uma String # 148.;

Isso é verdade, mas você não está se referindo ao valor retornado pela enumeração. Você está pedindo um membro da enumeração (nem mesmo uma instância da enumeração) para retornar o resultado de enumFunction, que é declarada como int.

Adicionando uma instrução switch para uma função dentro de uma enumeração

enumerações Swift são muitas vezes utilizados em conjunto com interruptor declarações. Aqui está uma função para colocar dentro da enumeração que contém um interruptor declaração. Quando você tem uma instância de uma enumeração (ou apenas a própria enumeração), você pode chamar uma função interna de um elemento apenas como você viu no trecho de código anterior. E, como o trecho de código anterior, o resultado retornado pela função não precisa ser do mesmo tipo que o tipo de enumeração.

No código a seguir uma função que retorna um Corda baseia-se no resultado de um interruptor declaração que utiliza os elementos da enumeração. Note-se que os elementos do interruptor não são cordas (note a ausência de aspas ea presença dos períodos líderes no caso nomes).

Experiência com este código, e você vai ver que se você definir o tipo de enumeração para int (ou Duplo ou qualquer coisa que não seja String) a função ainda irá retornar uma Corda. Esse é o resultado da função e não o tipo de enumeração. Esta é uma técnica muito útil para usar, e muitos desenvolvedores acham que reduz drasticamente o código que eles tem que escrever. (Essa if-then-else-if instruções dentro caso interruptor demonstrações pode ser omitido, como se pode interruptor instruções dentro caso declarações.)

func enumChoiceFunction () -> string {switch auto {case .track1, track2: return "correr ou caminhar" caso .park: return "Andar a pé, sentado em um banco, pássaros de alimentação" default: return "desfrutar da natureza"}}

A figura mostra o código descrito aqui.

image0.jpg

O código em si é fornecido aqui:

image1.jpg
enum Lugar: String {casepark = "parque", piscina = "piscina", bares = "escalada bares", track1 = "pista de corrida", track2 = "pista de caminhada" instalações let estáticos = [parque, piscina, bares, track1 , track2] func enumFunction () -> Int {return -17} enumChoiceFunction func () -> string {switch auto {case .track1, track2: return "correr ou caminhar" caso .park: return "andar a pé, sentado em um banco , alimentando pássaros "default: return" desfrutar da natureza "}}} deixe i = Place.bars.enumFunction () permitem e = Place.pool.rawValueprintln (Place.pool) seja x = Place.track1.enumChoiceFunction () var result: String = "" para a comodidade em Place.facilities {result = result + amenity.rawValue + ","} println (resultado)

menu