首页 > 其他 > 详细

结构体初始化

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

结构体初始化

如果结构体没有实现任何初始化函数,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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

结构体初始化

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!