如何在一行中初始化某些类型的多个变量

时间:2016-12-17 07:55:50

标签: swift

我希望实现像

这样的东西
var a, b, c: MyType = MyType()

但是这行不能编译,因为编译器处理类型注释MyType仅适用于变量c因此ab缺少类型注释或初始值类型推断的值。

以下两项都是合法的:

// legal but verbose
var a = MyType()
var b = MyType()
var c = MyType()

// legal but verbose to initialize
var a, b, c: MyType
a = MyType()
b = MyType()
c = MyType()

我能想到的这两种风格都是合法的,但有些冗长,特别是如果有几十种相同类型的变量。

有没有优雅的方法来实现这个目标?

2 个答案:

答案 0 :(得分:5)

Swift中的两个选项:逗号或元组。

用逗号分隔的语句:

var a = MyType(), b = MyType(), c = MyType()

使用元组语句:

var (a, b, c) = (MyType(), MyType(), MyType())

另外,但是不鼓励,你可以使用分号在一行上发表多个语句:

var a = MyType(); var b = MyType(); var c = MyType()

答案 1 :(得分:4)

  

您可以在一个上声明多个常量或多个变量   行,用逗号分隔:

var a = "", b = "", c = ""
     

请注意

     
    

如果代码中的存储值不会改变,请始终声明     它与let关键字一起作为常量。仅使用变量进行存储     需要能够改变的价值。

  

文档HERE

在你的情况下:

var a = MyType(), b = MyType(), c = MyType()