generic
// Generics func getThree<T>(x: T){ print(x) print(x) print(x) } getThree(x: 5) getThree(x: "Hello") getThree(x: 2.3)
guard
// func sayHi(_ msg: String?){ // if let s = msg{ // print(s) // } else { // print("value is not set!") // } // } // sayHi(nil) // sayHi("hello") func sayHi(_ msg: String?){ guard let s = msg else{ print("value not set!") return } print(s) } sayHi(nil) sayHi("hello")
例外処理
// 例外処理 enum LoginError: Error{ case emptyName case shortName } class User { let name: String init(_ name: String){ self.name = name } func login() throws{ guard name != "" else { throw LoginError.emptyName } guard name.characters.count > 5 else { throw LoginError.shortName } print("login success") } } let tom = User("tom") do { try tom.login() } catch LoginError.emptyName { print("please enter your name") } catch LoginError.shortName{ print("too short") }
optional
// class User { // var name: String = "" // } // let user: User // user = User() // user.name = "him" // let s = user.name.uppercased() // print(s) class User { var name: String = "" } let user: User? user = User() user?.name = "him" if let s = user?.name?.uppercased(){ print(s) }
// Implicity Unwrapped Optional // var msg: String? var msg: String! msg = "hello" // if msg != nil { // print(msg!) // } print(msg)