12/08/2018, 16:36
Function Programming in Swift!
Bài Toán Như đã nói ở bài viết trước hôm nay mình sẽ hướng dẫn các bạn về Function Programming. //: Playground - noun: a place where people can play import Foundation // === MAP === // Cach su dung thong thuong func map(_ value: Int, transform: (Int) -> Int) -> Int { return ...
Bài Toán
- Như đã nói ở bài viết trước hôm nay mình sẽ hướng dẫn các bạn về Function Programming.
//: Playground - noun: a place where people can play import Foundation // === MAP === // Cach su dung thong thuong func map(_ value: Int, transform: (Int) -> Int) -> Int { return transform(value) } map(10) { value in return value * value } map(10) { (value) -> Int in return value / 2 } // Su dung voi Generics func map<T>(_ value: T, transform: (T) -> T) -> T { return transform(value) } map("Viet") { (value) in return value + "Nam" } // Ap dung vao Array extension Array { func map<T>(_ transform: (Element) -> T) -> [T] { var result: [T] = [] for obj in self { result.append(transform(obj)) } return result } } // Su dung let arr = [1, 3, 5, 2, 4] let mapArray = arr.map { (value) in return value * value } print(mapArray) // kq: [1, 9, 25, 4, 16] // === Filter ==== extension Array { func filter(_ check: (Element) -> Bool) -> [Element] { var result: [Element] = [] for obj in self where check(obj) { result.append(obj) } return result } } let filterArray = arr.filter { (value) -> Bool in return value % 2 == 0 } print(filterArray) // kq: [2, 4] // === Reduce === extension Array { func reduce<T>(_ initialValue: T, combine: (T, Element) -> T) -> T { var result = initialValue for obj in self { result = combine(result, obj) } return result } } let reduceArray = arr.reduce(0) { (result, value) in return result + value } print(reduceArray) // kq: 15 // Bai toan: binh phuong tat ca cac Element trong mang, loc gia tri chan, roi tinh tong tat ca gia tri chan. let binding = arr .map { (value) in return value * value }.filter { (value) -> Bool in return value % 2 == 0 }.reduce(0) { (result, value) in return result + value } print(binding)
Kết
Observable, Signal là trái tim của Rx, ReactiveCocoa thì Function Programming là phép thuật của nó, mọi thứ đều hướng tới Observable và Signal với mục đích sử dụng sức mạnh của phép thuật này, ở trên mình trình bày một cách đơn giản cho các bạn mới tiếp cận có cái nhìn cơ bản về fuction programming.
- Function Reactive Programming RxSwift , Reactive Swift nói theo cách đơn giản: chỉ có thế , Try and Try!.