iosiOS DeveloperSwift

Swift中的函数式编程

2016-08-31  本文已影响1772人  coderwhy

一. 背景简介

二. 需求的解决和思考?

// 定义数组(当然其他数字也可以)
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

// 解决方案一:
var evens = [Int]()
for n in numbers {
    if n % 2 == 0 {
        evens.append(n)
    }
}

print(evens)
// 解决方案二:
let evens1 = numbers.filter { (num : Int) -> Bool in
    return num % 2 == 0
}
let evens2 = numbers.filter { $0 % 2 == 0 }

三. 什么是函数式编程?

四. 示例程序分析

// 给系统Array扩充函数
extension Array {
    func myOwnFilter(oprationFunc : (Int) -> Bool) -> [Int] {
        var tempArray = [Int]()

        for item in self {
            if oprationFunc(item as! Int) {
                tempArray.append(item as! Int)
            }
        }

        return tempArray
    }
}

// 用自己的函数解决问题
let evens3 = numbers.myOwnFilter { (num : Int) -> Bool in
    return num % 2 == 0
}
// Array扩充方法
extension Array {
    func myOwnFilter(oprationFunc : (Element) -> Bool) -> [Element] {
        var tempArray = [Element]()

        for item in self {
            if oprationFunc(item) {
                tempArray.append(item)
            }
        }

        return tempArray
    }
}

// 获取所有的偶数
let evens3 = numbers.myOwnFilter { (num : Int) -> Bool in
    return num % 2 == 0
}

// 获取所有带"w"的字符串
let strs = ["why", "lmj", "lnj", "yz", "wff", "sws"]
strs.myOwnFilter { (str : String) -> Bool in
    return str.containsString("w")
}

五. 函数式编程有什么用?

上一篇下一篇

猜你喜欢

热点阅读