我正在学习Swift,我从以下项目中看到了一些代码:
struct ServiceType {
init(_ value: UInt)
var value: UInt
}
var External: ServiceType { get }
var Internal: ServiceType { get }
var Normal: ServiceType { get }
据我所知,上面的代码创建了三个计算属性 External
,Internal
&所有类型为Normal
的{{1}}。
我想问的是:
为什么ServiceType
声明声明了一个init()?当我阅读Swift编程书时,我没有看到这个。
struct
中_
之前的空格value: UInt
后跟空格是什么意思?
在Swift中默认情况下struct是否具有init(_ value: UInt)
属性?上面的代码只是明确地将value
的类型设置为UInt?
每个属性中的空值是什么意思?它返回什么价值?
操作系统是否随机将UInt值分配给每个属性的值?
答案 0 :(得分:2)
1。 如果一个struct没有自己提供一个默认的初始化器,它就会得到一个默认的初始化器:
struct ServiceType {
var value: UInt
}
// default initialize with an specified parameter name "value" (called external name)
let service = ServiceType(value: 4)
在这种情况下,struct提供了一个初始化程序,因此您不会获得默认值。
2。 下划线表示您没有外部名称:
let service = ServiceType(4)
用不同的名称替换下划线,名称现在是外部名称:
struct ServiceType {
init(aval value: UInt)
var value: UInt
}
let service = ServiceType(aval: 4)
3。
如果我理解你正确的结构通常默认没有值属性,在这种情况下,value
属性被声明为类型Uint
。 {I}被推断为var value = 0
类型。
4。
如果您在协议Int
中看到此代码意味着它只返回一个值而不设置一个({ get }
)。
这些计算属性的返回值都是{ get set }
类型。
5。
在Swift中,您不会获得ServiceType
,Ints
的默认值,...与其他语言(大多数为0)不同,默认情况下Doubles
除外Optionals
。所以你必须确保在使用它之前初始化该值,否则编译器会抱怨。
如果您阅读Swift书的initialization章节,所有这一切都会非常清楚。