2016-12-17 71 views
1

我想实现像如何初始化一些类型的多个变量在一行

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() 

这两种风格我能想到的都是合法的,但不知何故繁琐,尤其是如果有几十个同类型的变量。

是否有任何优雅的方式来实现这一目标?

+1

IMO,在同一行声明多个变量看起来不太好。 – Sweeper

+0

如果你有一个默认值,最接近的是元组synatx的使用。 –

回答

1

你可以声明在单一 线多常量或多个变量,用逗号分隔:如果在你的代码存储的值不会改变

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

注意

,总是声明 它与let关键字的常量。使用变量仅用于存储需要能够更改的 值。

文档HERE

你的情况:

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

两个选项斯威夫特:逗号或元组。

用逗号分隔的语句:

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

有了一个元组声明:

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

还可以,但气馁,您可以使用分号在一行进行多次声明:

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