我想达到这样的目标
var a, b, c: MyType = MyType()
但该行未编译,因为编译器将类型注解MyType
视为仅用于变量c
,因此a
和b
缺少类型注解或用于类型推断的初始值。
以下两种情况都是法律的的:
// 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()
我能想到的这两种风格都是法律的的,但不知何故有些冗长,特别是当有几十个相同类型的变量时。
有什么优雅的方法可以达到这个目的吗?
5条答案
按热度按时间muk1a3rh1#
Swift中的两个选项:逗号或元组。
使用逗号分隔语句:
使用元组语句:
此外,您可以使用分号在一行中创建多个语句,但不建议这样做:
cqoc49vn2#
您可以在一行中声明多个常量或多个变量,用逗号分隔:
注
如果代码中存储的值不会改变,那么总是用let关键字将其声明为常量,变量只用于存储需要能够改变的值。
文件HERE。
在您的情况下:
mpbci0fu3#
我的类型=我的类型()变量我的类型:[任意] = [整数、“字符串”、“abc”、双精度型等]
svmlkihl4#
斯威夫特5 +
一些可能的解决方案(如果你打算多次这样做的话,也许值得这么做)是写一个结构体来初始化你的值,并在该结构体上写一个方法(或计算属性)来返回解压缩的各个组件。你还可以添加一个类型别名来提高可读性:
用法:
当然,如果不需要那么细的控制粒度,也可以在任何地方添加一个静态(或非静态)helper方法(但最好是在名称空间中,例如MyType的扩展中)。
你可以简单地写:
然后把它当作:
我最近遇到了一个类似的情况关于颜色成分。
我当时是这么做的:
erhoui1w5#
更聪明的方法是