Swift 3.0 Struct 结构体初始化

Struct的默认初始化器只有两种:
1 在全部属性有默认值下会有一个()的默认初始化器生成
2 还会自动生成一个为每个属性赋值的memberwise初始化器,不管有没有给结构体中的属性赋值

但如果仅希望外部给该结构体中的某一个参数赋值,系统暂时还无法识别哪一个没有赋值然后自动生成一个对应该属性的初始化器,则需要我们外部提供自定义init初始化器。例如:

struct UserRequest {
    
    typealias Response = User
    
    var name: String
    var host: String = "https://api.onevcat.com"
    var path: String { return "/users/\(name)" }
    var method: HTTPMethod = .GetStyle
    var parameter: [String : Any] = [:]
    
    func parseData(result: Data) -> User? {
        return User(data: result)
    }
    
    //默认的初始化只有在全部由默认值下会有一个()的初始化以及为每一个属性赋值的memberwise初始化  如果仅某一个参数需要外部提供则不给自定义init则会在外部默认是memberwise初始化器
    init(withName: String) {
        name = withName
    }
}

//调用时
UserRequest(withName: "YesIt'sMe")

你可能感兴趣的:(Swift 3.0 Struct 结构体初始化)