2014-06-12 29 views
9

是否有可能编译Swift中的编译时断言,如C++中的static_assert?也许某种方式来利用泛型的类型约束来强制编译器中断?在Swift中编译时间断言?

+0

我不知道它如何有用。 Swift已经可以使用'where'来限制类似 –

+1

的东西像#error? –

+0

我只提到将泛型约束为潜在的实现方法,而不是我想要声明的。在我的例子中,我定义了大量相关的编译时间常量整数,我想在编译时进行验证。我通常会在C++中使用static_assert。 – Neil

回答

-5

如果你在谈论一般的断言,这里的应用程序将崩溃,如果给定的条件,则只需使用:assert(condition,message)

例如:assert(2 == 3,"failing because 2 does not equal 3")

这是可能的斯威夫特。不过,我应该注意到,苹果的设计理念是,应用程序永远不会崩溃,而是应该以“复杂”的方式处理所有错误。

+0

您指的是正常的运行时断言。我问的是编译时断言,像C++中的static_assert。这用于静态可验证的表达式,当它们失败时会导致编译器错误。 – Neil

+0

尼尔,对不起,我没有真正遵循 - 我没有使用static_assert。 Swift书中基础部分的最后部分简要地提到了断言。我没有看到任何关于编译时间的问题,就像你问的那样。我不知道他们是否支持他们。链接:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html –

0

这目前正在审查中Swift evolution,但目前不在语言中。

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分并提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/19050719) – Maak