Latest web development tutorials

enumeração Swift

Enumeração é simplesmente um tipo de dados, mas este é o único tipo de dados que contém um conjunto de dados personalizado específico, que é um conjunto de características comuns da recolha de dados.

estrutura enumeração Swift semelhante ao Objective C e C, funções de enumeração:

  • é declarado na classe, a classe pode acessar seu valor pela instanciação.

  • Enum também pode definir um construtor (initializers) para fornecer um valor de membro inicial; pode estender sua funcionalidade na base de implementação original.

  • Você pode observar o protocolo (protocolos) para fornecer um recurso padrão.

gramática

palavra-chave enum Swift é usado para criar e para enumerar suas definições inteiras colocado em um par de chaves:

enum enumname {
   // 枚举定义放在这里
}

Por exemplo, nós definimos o dia seguinte da semana de enumeração:

import Cocoa

// 定义枚举
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
    case Saturday
}

var weekDay = DaysofaWeek.THURSDAY
weekDay = .THURSDAY
switch weekDay
{
case .Sunday:
    print("星期天")
case .Monday:
    print("星期一")
case .TUESDAY:
    print("星期二")
case .WEDNESDAY:
    print("星期三")
case .THURSDAY:
    print("星期四")
case .FRIDAY:
    print("星期五")
case .Saturday:
    print("星期六")
}

A saída de execução de programa acima é:

星期四

Valor (conforme definido na enumeração de Sunday , Monday , …… e Saturday ) são os membros dos valores de enumeração (ou membro). case Palavras-chave membros representam uma nova linha de valor será definido.

Nota: C e Objective-C e diferente membro de enumeração Swift não será dado um valor inteiro padrão está sendo criado. No exemplo acima DaysofaWeek exemplo, Sunday , Monday , …… e Saturday não será atribuída implicitamente o valor de 0 , 1 , …… e 6 . Em vez disso, esses membros próprios têm valores de enumeração completa que já estão claramente definidas DaysofaWeek tipo.

var weekDay = DaysofaWeek.THURSDAY 

weekDay tipo pode ser DaysofaWeek inferido quando um valor pode ser inicializado. Depois weekDay é declarado como um DaysofaWeek , você pode usar uma sintaxe abreviada para configurá-lo para outro (.) DaysofaWeek valor:

var weekDay = .THURSDAY 

Ao weekDay quando o tipo é conhecido, a sua atribuição pode ser omitida nome novamente enumeração. Use valores tipo de enumeração explícitas torna o código mais legível.

Ele pode ser dividido em enumeração valor associado com o valor original.

A diferença entre o valor de correlação e o valor original

O valor de correlação valor original
Diferentes tipos de dados O mesmo tipo de dados
Exemplos: enum {10,0.8, "Olá"} Exemplos: enum {10,35,50}
Crie um valor com base na constante ou variável Valor pré-preenchidos
valor de correlação quando você cria uma nova constante de enumeração baseado em assinaturas ou variável será definida, e cada vez que quando você tiver tempo, seu valor pode ser diferente. O valor original é sempre a mesma

O valor de correlação

O exemplo a seguir, definimos um estudante chamado do tipo enumerado, ele pode ser um valor nome associado (Int, Int, Int, Int), ou Marcar um tipo de cadeia (String) valor de correlação.

import Cocoa

enum Student{
    case Name(String)
    case Mark(Int,Int,Int)
}
var studDetails = Student.Name("w3big")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
    print("学生的名字是: \(studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
    print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。")
}

A saída de execução de programa acima é:

学生的成绩是: 98,97,95。

valor original

O valor original pode ser uma string, personagem ou qualquer valor inteiro ou de ponto flutuante. Cada valor original na sua declaração enum deve ser exclusivo.

Quando o valor original é uma enumeração inteiro, sem uma atribuição explícita para cada membro, Swift irá atribuir-lhe automaticamente.

Por exemplo, quando se utiliza um valor inteiro como o original, o valor implícito atribuídos sequencialmente incrementado por um. Se o primeiro valor não é atribuído o valor inicial será automaticamente ajustado para zero.

import Cocoa

enum Month: Int {
    case January = 1, February, March, April, May, June, July, August, September, October, November, December
}

let yearMonth = Month.May.rawValue
print("数字月份为: \(yearMonth)。")

A saída de execução de programa acima é:

数字月份为: 5。