Swift:是否可以有条件地声明变量?

下载

假设有struct两个变量:ab

是否可以根据条件声明两个变量之一并忽略另一个?

换句话说,是否有可能struct

struct example {
    let a: Int
    let b: Int
}

去做这个:

struct example {
    if (condition) {
        let a: Int
    } else {
        let b: Int
    }
}
罗伯·纳皮尔

这是不可能的,因为如果你这样做了,这段代码会做什么:

let e = exampleReturningFunction()
print(e.a)

如果condition是假的,这应该崩溃吗?应该a有一些默认值吗?什么价值?(如果是这样,只需在结构中使用默认值。)

在大多数情况下,您真正​​想要的是带有关联数据的枚举:

enum Example {
    case a(Int)
    case b(Int)
}

如果有很多相关的属性,你可以将它们组合在一起:

struct A { ... }
struct B { ... }

enum Example {
    case a(A)
    case b(B)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何基于布尔变量有条件地声明没有函数的类型?

在 Azure DevOps 上使用 YAML 有条件地声明变量组

有条件地声明查看子项

Swift 2:是否有一个简短的语法可以从一个可选变量中有条件地设置一个非可选变量?

我可以有条件地选择要分配给哪个变量吗?

PHP 有条件地查看字符串是否包含变量

是否可以有条件地在Lua中加载库?

是否可以在AngularJS中有条件地打开和关闭过滤器?

Primefaces dataTable:是否可以有条件地显示按钮?

是否可以在此 mysql 表上有条件地计数

是否可以在不锁定的情况下有条件地更新可为空的 long?

Spring Boot是否可以对谓词进行分组或有条件地使用'in'

是否可以有条件地启用“ derive”之类的属性?

是否可以在 System Verilog 中有条件地生成 for 循环?

是否可以使用Angular2有条件地显示元素属性?

是否可以在函数内部有条件地编译代码块?

是否可以使用模板元编程有条件地禁用全局函数定义?

是否可以有条件地序列化CDATA?

7z:是否可以有条件地排除文件?

R Description文件:是否可以“有条件地”导入软件包?

是否可以使用elm-decode-pipeline有条件地解码某些字段

如果类型(不)相等,在C ++中是否可以有条件地编译代码

是否可以在Modelica中有条件地设置方程式属性?

在HTL / Sightly中是否可以有条件地打开或关闭标签?

是否可以(有条件地)从两个不同的集合中查找

是否可以在Vue.js中有条件地导入CSS文件?

C ++是否可以有条件地降低类指针的作用?

是否可以有条件地在Oracle中透视不同数据类型的列?

是否可以使单个参数在步进函数中有条件地接收其值?