ios编程技术收集首页投稿(暂停使用,暂停投稿)iOS Developer

函数式编程之Map&Reduce

2016-09-06  本文已影响1435人  coderwhy

一.内容概述

二. Map的使用

1. Map的介绍

2. 示例分析

// 1.定义字符串数组
let animals = ["DRAGON", "CAT", "TIGER"]

// 2.使用函数映射
let animalEmojis = animals.map { (str : String) -> Character in
    let tmp = "\\N{\(str)}"
    let emojiStr =
    tmp.stringByApplyingTransform(
        NSStringTransformToUnicodeName,
        reverse: true)

    return emojiStr!.characters.first!
}

// 3.打印结果
print(animalEmojis)
// 0.定义字符串数组
let animals = ["DRAGON", "CAT", "TIGER"]

// 1.抽取函数
func strToEmoji(str : String) -> Character {
    let tmp = "\\N{\(str)}"
    let emojiStr =
    tmp.stringByApplyingTransform(
        NSStringTransformToUnicodeName,
        reverse: true)

    return emojiStr!.characters.first!
}

// 2.将函数传入
let animalEmojis = animals.map(strToEmoji)

// 3.打印结果
print(animalEmojis)

3.定义自己的Map函数

// 1.定义自己的map函数
extension Array {
    func myMap<SrcType, DestType>(transform: (SrcType) -> (DestType)) -> [DestType] {
            var output: [DestType] = []

            for item in self {
                let transformed =
                transform(item as! SrcType)
                output.append(transformed)
            }

            return output
    }
}

// 2.使用自己的map函数
let animals = ["DRAGON", "CAT", "TIGER"]

let animalEmojis = animals.myMap { (str : String) -> (Character) in
    let tmp = "\\N{\(str)}"
    let emojiStr =
    tmp.stringByApplyingTransform(
        NSStringTransformToUnicodeName,
        reverse: true)

    return emojiStr!.characters.first!
}

print(animalEmojis)

二. Reduce的使用

1.Reduce的介绍

2.Reduce的使用

// 1.定义数组
let numbers = [1, 2, 3, 4, 5]

// 2.合并数组中所有的元素
// 2.1.普通做法
var total = 0
for num in numbers {
    total += num
}

// 2.2.函数式编程中Reduce
var total1 = numbers.reduce(0) { (num1 : Int, num2 : Int) -> Int in
    return num1 + num2
}
var total2 = numbers.reduce(0) { $0 + $1 }

3. 定义自己的Reduce函数

// 1.定义自己的Reduce函数
extension Array {
    func myReduce<C, T>(initial: C, combine: (C, T) -> C) -> C {
            var seed = initial

            for item in self {
                seed = combine(seed, item as! T)
            }

            return seed
    }
}


// 2.定义数组
let numbers = [1, 2, 3, 4, 5]

// 3.使用自己的Reduce函数
let result = numbers.myReduce(1) { (num1 : Int, num2 : Int) -> Int in
    return num1 * num2
}

// 4.打印结果
print(result)
上一篇 下一篇

猜你喜欢

热点阅读