Map

作者: PonyCui | 来源:发表于2015-11-19 10:51 被阅读83次

以过,我们需要将一个数组中的类型转换为另一个类型,是一件非常麻烦的事情。

假定,我们有如下的数据结构。

class Student {
    
    enum SchoolLevel {
        case Primary;
        case PrimaryMiddle;
        case HighMiddle;
        case HighSchool;
        
        static func level(age: Int) -> SchoolLevel {
            if age < 12 {
                return .Primary
            }
            else if age < 15 {
                return .PrimaryMiddle
            }
            else if age < 18 {
                return .HighMiddle
            }
            else {
                return .HighSchool
            }
        }
    }
    
    let name: String
    let schoolLevel: SchoolLevel
    
    init(item: Child) {
        self.name = item.name
        self.schoolLevel = SchoolLevel.level(item.age)
    }
    
}

class Child {
    let name: String
    let age: Int
    
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

假定我们有一个数组包含有数个 Child 元素

let children = [
    Child(name: "Pony", age: 8),
    Child(name: "Jack", age: 13),
    Child(name: "Leros", age: 18),
]

不使用map时,我们需要以下的代码完成转换工作。

var students: [Student] = []
for child in children {
    students.append(Student(item: child))
}

但使用map时,只需要指定返回值类型即可,同时students数组还可以是不可变的。

let students = children.map { (childItem) -> Student in
    return Student(item: childItem)
}

使用 map 其实并无节省多少代码,但减少一次手动的遍历,也就减少一次出错的机会。

相关文章

网友评论

    本文标题:Map

    本文链接:https://www.haomeiwen.com/subject/sfjlhttx.html