码迷,mamicode.com
首页 > 其他好文 > 详细

结构体初始化

时间:2018-08-11 17:46:56      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:-o   成员   etc   pack   image   pac   conf   https   form   

结构体初始化

如果结构体没有实现任何初始化函数,Swift 默认给生成一个包含所有成员变量的初始化构造器。

struct RocketConfiguration {
    let name: String = "Athena 9 Heavy"
    let numberOfFirstStageCores: Int
    let numberOfSecondStageCores: Int
    let numberOfStageReuseLandingLegs: Int
}

如果使用如下的代码初始化这个结构体:

let athena9Heavy = RocketConfiguration()

将产生编译错误,如下图:

 
技术分享图片
 

有两种做法可以消除错误,声明结构体成员时即赋值,如下:

struct RocketConfiguration {
    let name: String = "Athena 9 Heavy"
    let numberOfFirstStageCores: Int = 3
    let numberOfSecondStageCores: Int = 1
    let numberOfStageReuseLandingLegs: Int? = nil
}

let athena9Heavy = RocketConfiguration()

但这种情况下,成员变量无法再修改,除非将let改成var。或者使用默认的初始化构造器,给每个成员赋一个初始化的值:

struct RocketConfiguration {
    let name: String = "Athena 9 Heavy"
    let numberOfFirstStageCores: Int
    let numberOfSecondStageCores: Int
    let numberOfStageReuseLandingLegs: Int
}

let athena9Heavy = RocketConfiguration(numberOfFirstStageCores: 3, numberOfSecondStageCores: 1, nominalBurnTime: nil)

 



作者:yanging
链接:https://www.jianshu.com/p/fe8918f5917a
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

结构体初始化

标签:-o   成员   etc   pack   image   pac   conf   https   form   

原文地址:https://www.cnblogs.com/feng9exe/p/9460383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!