Last active
June 7, 2020 19:40
-
-
Save byJeevan/29f1e20cf0a07e961e982890bd9c53a3 to your computer and use it in GitHub Desktop.
Explore swift APIs that reduces lots of code effort
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Author
Author
4. Data structures
///Factorial with recursion
func factorial(num:Int) -> Int {
if num == 1 { return 1 }
return num * factorial(num: num - 1)
}
factorial(num: 7) //gives 5040
Author
4. Stack implementation (LIFO)
`
//Stack implementation (LIFO)
struct Stack {
private var stackArray:[String] = []
func peak() -> String? {
return self.isEmptyStack() ? nil : stackArray.first
}
mutating func pop() -> String? {
return self.isEmptyStack() ? nil : stackArray.removeFirst() //returns removed element
}
mutating func push(element:String) {
stackArray.append(element)
}
func isEmptyStack() -> Bool {
return stackArray.count == 0
}
}
extension Stack: CustomStringConvertible {
var description: String {
let topLogString = "-----STACK----- \n"
let bottomLogString = "\n------*--------\n"
let middleLogString = stackArray.joined(separator: "\n")
return topLogString + middleLogString + bottomLogString
}
}
//Testing
var stackTest = Stack()
stackTest.push(element: "Eleo")
stackTest.push(element: "Combo")
stackTest.push(element: "Rambo")
print(stackTest)
/*
-----STACK-----
Eleo
Combo
Rambo
------*--------
*/
stackTest.peak()
stackTest.pop()
/*
-----STACK-----
Combo
Rambo
------*--------
*/
print(stackTest)
`
//BONUS: Implement generic type of stack
Author
Using Enums :
- with combining Tuples for complex data structure.
- Polymorphism representation of collections ex. Array. That gives compile time safety check.
- Stay away from hierarchical architecture (means avoids subclass). Where we can add additional type with new property without re-arranging super class properties.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
3. Summary of module - 1
Extensions are used to add new functionality to an existing class, structure, enumeration or protocol type. Extensions can be declared using the extension keyword.
A protocol defines a blueprint of methods, properties, and other requirements that suit a piece of functionality and can be adopted by a class, structure or enumeration. A protocol is defined similar to a class however, the protocol keyword is used.
Delegation is a simple way of connecting objects and communicate with each other and can be used to pass data between view controllers.
Mutating functions are functions that use the mutating keyword, this allows these functions to change the value of the variables in this structure or class.
Swift transformations are functions you can use on various collections and sequence types to permutate through and modify the data in an elegant way. For example the map, flatMap, compactMap, filter, reduce and zip.