funcswapValues<T>(_a: inoutT, _b: inoutT) { (a, b) = (b, a) } var i1 =10 var i2 =20 swapValues(&i1, &i2) var d1 =10.0 var d2 =20.0 swapValues(&d1, &d2)
structDate { var year =0, month =0, day =0 } var dd1 =Date(year: 2011, month: 9, day: 10) var dd2 =Date(year: 2012, month: 10, day: 11) swapValues(&dd1, &dd2)
泛型函数赋值给变量
1 2
functest<T1, T2>(_t1: T1, _t2: T2) {} var fn: (Int, Double) -> () = test
structStack<E> { var elements = [E]() mutatingfuncpush(_element: E) { elements.append(element) } mutatingfuncpop() -> E { elements.removeLast() } functop() -> E { elements.last! } funcsize() -> Int { elements.count } }
enumScore<T> { case point(T) case grade(String) } let score0 =Score<Int>.point(100) let score1 =Score.point(99) let score2 =Score.point(99.5) let score3 =Score<Int>.grade("A")
publicenumOptional<Wrapped> : ExpressibleByNilLiteral { case none casesome(Wrapped) publicinit(_some: Wrapped) }
var age: Int? =10 var age0: Optional<Int> =Optional<Int>.some(10) var age1: Optional= .some(10) var age2 =Optional.some(10) var age3 =Optional(10) age =nil age3 = .none
var age: Int? =nil var age0 =Optional<Int>.none var age1: Optional<Int> = .none
var age: Int? = .none age =10 age = .some(20) age =nil
switch age { caselet v?: print("some", v) casenil: print("none") }
switch age { caselet .some(v): print("some", v) case .none: print("none") }
// 另一示例 var age_: Int? =10 var age: Int?? = age_ age =nil
var age0 =Optional.some(Optional.some(10)) age0 = .none var age1: Optional<Optional> = .some(.some(10)) age1 = .none
var age: Int?? =10 var age0: Optional<Optional> =10