structFahrenheit{vartemperature:Doubleinit(){temperature=32.0}}varf=Fahrenheit()println("The default temperature is \(f.temperature)")//打印 The default temperature is 32.0
classSurveyQuestion{vartext:Stringvarresponse:String?init(text:String){self.text=text}funcask(){println(text)}}letcheeseQuestion=SurveyQuestion(text:"Do you like cheese?")cheeseQuestion.ask()cheeseQuestion.response="Yes , I do like cheese"
classSurveyQuestion{lettext:Stringvarresponse:String?init(text:String){self.text=text}funcask(){println(text)}}letcheeseQuestion=SurveyQuestion(text:"Do you like cheese?")cheeseQuestion.ask()cheeseQuestion.response="Yes , I do like cheese"
structAnimal{letspecies:Stringinit?(species:String){ifspecies.isEmpty{returnnil}self.species=species}}// someCreature 累形式Animal? 而不是AnimalletsomeCreature=Animal(species:"Giraffe")ifletgiraffe=someCreature{println("An animal was initialied with a species of \(someCreature!.species)")}letanonymousCreature=Animal(species:"")ifanonymousCreature==nil{println("The anonymous creature could not be initialized")}
enumTemperatureUnit{caseKelvin,Celsius,Fahrenheitinit?(symbol:Character){switch(symbol){case"K":self=.Kelvincase"C":self=.Celsiuscase"F":self=.Fahrenheitdefault:returnnil}}}letfahrenheitUnit=TemperatureUnit(symbol:"F")iffahrenheitUnit!=nil{println("This is a defined temperature unit, so initialization succeeded.")}// 打印 "This is a defined temperature unit, so initialization succeeded."letunknownUnit=TemperatureUnit(symbol:"X")ifunknownUnit==nil{println("This is not a defined temperature unit, so initialization failed.")}// 打印 "This is not a defined temperature unit, so initialization failed."
enumTemperatureUnit:Character{caseKelvin="K",Celsius="C",Fahrenheit="F"}letfahrenheitUnit=TemperatureUnit(rawValue:"F")iffahrenheitUnit!=nil{println("This is a defined temperature unit, so initialization succeeded.")}// prints "This is a defined temperature unit, so initialization succeeded."letunknownUnit=TemperatureUnit(rawValue:"X")ifunknownUnit==nil{println("This is not a defined temperature unit, so initialization failed.")}// prints "This is not a defined temperature unit, so initialization failed."
classProduct{// 定义为可选类型,来确保失败构造器触发失败条件varname:String?init?(name:String){ifname.isEmpty{returnnil}self.name=name}}ifletbowTie=Product(name:"bow tie"){// 不需要检查 bowTie.name == nilprintln("The product's name is \(bowTie.name)")}// 打印 "The product's name is bow tie"
classCartItem:Product{varquantity:Int!init?(name:String,quantity:Int){super.init(name:name)ifquantity<1{returnnil}self.quantity=quantity}}iflettwoSocks=CartItem(name:"sock",quantity:2){println("Item: \(twoSocks.name), quantity: \(twoSocks.quantity)")}// 打印 "Item: sock, quantity: 2"ifletzeroShirts=CartItem(name:"shirt",quantity:0){println("Item: \(zeroShirts.name), quantity: \(zeroShirts.quantity)")}else{println("Unable to initialize zero shirts")}// 打印 "Unable to initialize zero shirts"ifletoneUnnamed=CartItem(name:"",quantity:1){println("Item: \(oneUnnamed.name), quantity: \(oneUnnamed.quantity)")}else{println("Unable to initialize one unnamed product")}// 打印 "Unable to initialize one unnamed product"