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")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方文档 初始化 Initialization是为准备使用类,结构体或者枚举实例的一个过程。这个过程涉及了在实例里...
    hrscy阅读 4,826评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,062评论 19 139
  • 初始化(Initialization) 初始化是类、结构体、枚举类型的准备过程。这个过程涉及到所有存储属性的初始化...
    泗哥阅读 10,931评论 0 3
  • 初始化 (Initialization) 自从苹果2014年发布Swift,到现在已经两年多了,而Swift也来到...
    Lebron_James阅读 4,938评论 0 0
  • 123.继承 一个类可以从另外一个类继承方法,属性和其他特征。当一个类继承另外一个类时, 继承类叫子类, 被继承的...
    无沣阅读 5,274评论 2 4

友情链接更多精彩内容