Swift3 中的可选结构

Optional struct in Swift3

我想声明一个存储可选结构的变量,如下所示:

struct my_struct{
    var x: Double
    var y: Double
}

var my_variable = my_struct?

我说这个语法在 Swift2 中是正确的吗?不幸的是,它不再适用于 Swift3。 "new" 实现此目标的方法是什么?

struct my_struct{
    var x: Double
    var y: Double
}

var my_variable:my_struct?

请注意,在 Swift 中,类型通常是大写和驼峰式的

struct MyStruct {
    var x: Double
    var y: Double
}

var myVariable: MyStruct?

该语法在 Swift 2 中也不起作用。

首先让我们使用一个 Swift 合规名称

struct MyStruct { ... }

您有两个选择:

  • myVariable : MyStruct? 声明了一个没有值的可选结构 (nil)

  • myVariable : MyStruct? = MyStruct() 声明一个可选的空结构。

注意:考虑到您必须为第二种形式的结构的属性分配默认值,或者使用成员初始化器或编写自定义初始化器。

PS:不要将可选项用作 无关紧要 的借口。 Swift 鼓励您尽可能多地使用非可选类型。