Hi,
Swift has a powerful feature of writing generic function as in Java which was missing in objective C.
It makes our code flexible and reusable for various types, meaning it can work with any data type. For similar logics and problems generic is a solution.
Let me explain you here:
If we have two STRINGS and need to be swapped then we write function something like:
func swapTwoStrings(firstString: inout String , secondString: inout String) {
let temporaryString = firstString
firstString = secondString
secondString = temporaryString
}
Now if we again need to swap two INTEGERS then we write a function in similar manner as written above:
func swapTwoNumbers(firstNumber: inout Int , secondNumber: inout Int) {
let temporaryNumber = firstNumber
firstNumber = secondNumber
secondNumber = temporaryNumber
}
You’ve noticed that we are using same logic to swap strings and Integers or in other words both functions are identical. Now it may be a case that we may need swapping for other types as well. In that case it’s very useful and flexible to write a single function(so called generic function) that can handle all types to swap values.
Example:
func swapValues<T>(first: inout T, second: inoutT) {
let temporary = first
first = second
second = temporaryA
}
Although this function is identical to functions used for swapping integers and strings with only difference is that we are using a placeholder T(say, for now) instead of an actual type. Placeholder(T, you can use any placeholder name) should be used in angle brackets because these brackets tells compiler that T is a placeholder type name. The placeholder doesn’t say anything what T should be but both first and second parameter should be of T kind.
Now using generic swapping function you can swap various type of values, provided both parameters are of same type.
Thank You
0 Comment(s)