在Swift中使用Maps返回一个数组数组,有人可以确认我对这段代码的理解吗?

时间:2016-02-29 16:00:56

标签: swift function dictionary

我对以下代码的理解是:

func generateRandomData() -> [[UIColor]] {
    let numberOfRows = 2
    let numberOfItemsPerRow = 7
    return (0..<numberOfRows).map { _ in
        return (0..<numberOfItemsPerRow).map { _ in UIColor.randomColor() }
    }
}

解释

// Returns an array of arrays 
func generateRandomData() -> [[UIColor]] {

    // 2 - Defines local variables
    let numberOfRows = 2
    let numberOfItemsPerRow = 7

    // 3 - From 0 to numberOfRows creates a map? 
    // 4 - For each element applies the high order function map using the function defined on the right
    return (0..<numberOfRows).map { _ in
        // For each element in the array applies another high order map function that creates numberOfItemsPerRow colours
        return (0..<numberOfItemsPerRow).map { _ in UIColor.randomColor() }
    }
}

代码的作用

所以基本上代码使用了map关键字的两倍,并创建了总共#numberOfItemsPerRow个数组,每个数组包含#numberOfItemsPerRow项,每个项都是UIColor类型。

这是对的吗?

1 个答案:

答案 0 :(得分:0)

所以代码理解正确

正如有人建议验证我的理解的好方法是使用playgrounds

另一篇有用的文章让我更了解Swift的新功能如下:

https://www.weheartswift.com/higher-order-functions-map-filter-reduce-and-more/