classDog: NSObject{ letorigin: String= "中國" fileprivatevarname: String? privatevarage: Int? init(_name: String?, age: Int= 1) { self.name= name ?? "旺財" self.age= age } }
定義了一個Dog類,一個常量「origin」,當一個變量被定義成let型,則只能被賦值一次。「name」和」age」是兩個可空類型的變量。重載了一個init方法,在init方法中有兩個形參。「name」爲可空類型,」age」的默認值爲一。在init方法中將這兩個變量賦值給屬性。其中判斷name有值就設置name,爲空時設置默認值「旺財」。編程
let sum: ((Int,Int) -> Int) = {(a, b) in returna + b } let res = sum(1, 2) print(res) int(^SumBlock) (int, int) = ^(intx, inty) { return x + y; };
let str = "hello world" var str0 = str.prefix(2)//前兩個 var str1 = str.suffix(2)//後兩個 let index0 = str.index(str.endIndex, offsetBy: -4) var str2 = str[index0..<str.endIndex]//後4個 let index1 = str.index(str.startIndex, offsetBy: 4) var str3 = str[str.startIndex..<index1]//前4個
與OC的對比swift
NSString*str = @"hello world"; id str0 = [str substringToIndex:2]; id str1 = [str substringFromIndex:str.length-2]; id str2 = [str substringWithRange:NSMakeRange(2, 3)];
struct Animal { let region = "中國" var name: String? var color = UIColor.red init(name: String,color: UIColor) { self.name= name self.color= color } struct Dog { let legNum = 4 func run() -> String{ return"跑回家" } } }
enum SDCEnumType: Int{ case circle = 20 case check func enumTypeString(type: SDCEnumType) -> String{ switch type { case .circle: return"circle" default: if type.rawValue== 21{ return"check" } else{ return"其餘狀況" } } } enum SDCEnumSubType { case square(SDCEnumType) case ellipse(SDCEnumType) } }
protocol Student { var name: String{getset} var age: Int{get} static func study(date:Date) -> Date init(name:String) } extension Student{ var score:Float{ return80.8 } } protocol Childe:Student{ }
func SwapTwoValues <T> (inout a: T,inout b :T){ let tempValue = a a = b b = tempValue } structIntStack{ var items = [Int]() //壓棧 mutating func push(item:Int){ items.append(item) } //出棧 mutating func pop()->Int{ return items.removeLast() } } struct Stack<Ele>{ var items = [Ele]() mutating func push(item:Ele){ items.append(item) } mutating func pop()->Ele{ return items.removeLast() } }
//前置運算符,表示2的var0次方 prefix operator ^ prefix func^ ( var0: Double) -> Double{ return pow(2, var0) } //後置運算符,表示var0的2次方 postfix operator ^ postfix func ^ (var0: Double) -> Double{ return var0*var0 }