2015-09-06 68 views
0
  1. 我真的得到了什么是定义enum点和它做什么
  2. 怎么来当输入类型是Int我们有两个1和其他一些字符串作为我们的情况下
  3. 什么是rawValue
enum Rank : Int { 
    case Ace = 1 
    case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten 
    case Jack, Queen, King 

    func simpleDirection() -> String { 
     switch self { 
      case .Ace: 
       return "Ace" 
      case .Jack: 
       return "Jack" 
      case .Queen: 
       return "Queen" 
      case .King: 
       return "King" 
      default: 
       return String (self.rawValue) 
     } 
    } 
} 

let ace = Rank.Ace 
let aceRawValue = ace.rawValue 

回答

1
  1. 枚举是一个方式告诉类型系统的类型(等级)只能有指定(二级,三级等)的值。如果您尝试将Rank类型的变量设置为54,则编译器会引发错误。人类使用Rank.Ace而不是仅仅使用数字1的可读性更高。
  2. 值自动增加,因此两个都有一个raw价值2,三有3等等。
  3. 原始值是编译后的程序将用来表示枚举中的值的编号。编译的程序没有Rank或其允许值的概念。

为了压缩它,枚举在编译时帮助类型系统阻止您意外地使用不正确的卡片值。在运行时,枚举由其rawValue表示。

有关Swift枚举的更多详细信息,请参阅https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html。例如,Swift允许您在运行时通过自动创建一个初始值设定项来强制执行enum,该初始值设定项可从rawValue中创建一个可选的枚举值(请参见“从原始值初始化”一节)。

+0

究竟自我指的是什么?这是我们在案件中所做的吗? :) – dkfloza

+0

实例方法,如'simpleDirection'' self'指引用该方法的对象。例如,如果我们要调用'ace.simpleDirection()','self'就是指'ace'。你的例子中的switch语句只是将'self'与各种枚举值进行比较。 – nilern