Swift2.0学习三
发布时间:2020-12-14 06:44:47 所属栏目:百科 来源:网络整理
导读:Swift2.0学习三 枚举 在Swift中枚举值可以是任何类型 可选型的实质是枚举。 var webSite: OptionalString = Optional.Some("imooc.com")webSite = .None 原始值Raw Value enum Month: Int { case January = 1 case February = 2 case March = 3 case April =
Swift2.0学习三枚举在Swift中枚举值可以是任何类型 可选型的实质是枚举。 var webSite: Optional<String> = Optional.Some("imooc.com") webSite = .None 原始值Raw Valueenum Month: Int { case January = 1 case February = 2 case March = 3 case April = 4 case May = 5 case June = 6 case July = 7 case August = 8 case September = 9 case October = 10 case November = 11 case December = 12 } func monthsBeforeNewYear( month: Month ) -> Int { return 12 - month.rawValue } 根据rawValue构建枚举,返回值是一个可选型 let input = 4 let month = Month(rawValue: input) 关联值在枚举中,每一种可能性可以和一种变量相连接。 enum ATMStatus { case Success(Int) case Error(String) } var balance = 1000 func withdraw( amount: Int ) -> ATMStatus { if balance >= amount { balance -= amount return .Success(balance) }else { return .Error("Not enough money") } } let result = withdraw(100) switch result { case let .Success(newBalance): print("(newBalance) Yuan left in your account.") case let .Error(errorMessage): print("Error: (errorMessage)") } 递归枚举使用 indirect enum ArithmeticExpression { case Number(Int) case Addition( ArithmeticExpression,ArithmeticExpression ) case Multiplication( ArithmeticExpression,ArithmeticExpression ) } 使用 let five = ArithmeticExpression.Number(5) let four = ArithmeticExpression.Number(4) let sum = ArithmeticExpression.Addition(five,four) let two = ArithmeticExpression.Number(2) let product = ArithmeticExpression.Multiplication(sum,two) func evaluate(expression: ArithmeticExpression) -> Int { switch expression { case let .Number(value): return value case let .Addition(left,right): return evaluate(left) + evaluate(right) case let .Multiplication(left,right): return evaluate(left) * evaluate(right) } evaluate(product) //18 结构体结构体中声明的常量不可改变 struct Location{ var latitude: Double = 0 var longitude: Double = 0 } var location = Location() 使用 struct Location{ let latitude: Double let longitude: Double init(coordinateString: String) { let commaIndex = coordinateString.rangeOfString(",")!.startIndex let firstElement = coordinateString.substringToIndex(commaIndex) let secondElement = coordinateString.substringFromIndex(commaIndex.successor()) latitude = Double(firstElement)! longitude = Double(secondElement)! } } 可以使用如下方式构造结构体 let appleHeadQuarterLocation = Location(coordinateString: "37.2,47.8") 此时默认的构造方法就无效了。 可失败的构造函数 init?(coordinateString: String) { guard let commaIndex = coordinateString.rangeOfString(",")?.startIndex else{ return nil } guard let firstElement = Double(coordinateString.substringToIndex(commaIndex)) else{ return nil } guard let secondElement = Double(coordinateString.substringFromIndex(commaIndex.successor())) else { return nil } self.latitude = firstElement self.longitude = secondElement } 结构体和枚举是值类型 在Swift中Array Dictionary Set String Int Float Double Bool都是结构体 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |