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. 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
4. Data structures
///Factorial with
recursionfunc factorial(num:Int) -> Int {
if num == 1 { return 1 }
return num * factorial(num: num - 1)
}
factorial(num: 7) //gives 5040