Swift
func exchange<T>(inout a: T, inout b: T) { let temp = a a = b b = temp }
var numb1 = 100 var numb2 = 200
println("Before Swapping Int values are: \(numb1) and \(numb2)") exchange(&numb1, &numb2) println("After Swapping Int values are: \(numb1) and \(numb2)")
var str1 = "Generics" var str2 = "Functions"
println("Before Swapping String values are: \(str1) and \(str2)") exchange(&str1, &str2) println("After Swapping String values are: \(str1) and \(str2)") When we run the above program using playground, we get the following result: Before Swapping Int values are: 100 and 200 After Swapping Int values are: 200 and 100 Before Swapping String values are: Generics and Functions After Swapping String values are: Functions and Generics
Associated Types Swift allows associated types to be declared inside the protocol definition by the keyword 'typealias'. protocol Container { typealias ItemType mutating func append(item: ItemType) var count: Int { get } 218