Function Programming in Swift!
Bài đăng này đã không được cập nhật trong 6 năm
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!.
All rights reserved