【发布时间】:2014-06-12 05:06:16
【问题描述】:
是否可以像 C++ 中的 static_assert 一样在 Swift 中编写编译时断言?也许有某种方法可以利用泛型的类型约束来强制编译器中断?
【问题讨论】:
-
我不知道它有什么用处。并且 Swift 已经可以使用
where来约束泛型 -
类似#error?
-
我只提到了约束泛型作为潜在的实现方法,而不是我想要断言的。在我的例子中,我定义了大量相互关联的编译时常量整数,我想在编译时进行验证。我通常会在 C++ 中使用 static_assert 的东西。
-
我不完全确定 Swift 实际上有编译时常量。无论如何,一个普通的
assert几乎可以完成同样的工作。 -
@Sulthan:不,不会。在编译时(在您发布之前)捕获错误和在运行时当用户通过崩溃发现错误时(也就是说,如果断言在您的发布版本中仍然存在,而通常不是,那么可能会发生奇怪的事情)。因此,如果您可以让编译器捕获尽可能多的问题,那就太好了。
标签: swift assert static-assert