是否有可能编译Swift中的编译时断言,如C++中的static_assert?也许某种方式来利用泛型的类型约束来强制编译器中断?在Swift中编译时间断言?
回答
如果你在谈论一般的断言,这里的应用程序将崩溃,如果给定的条件,则只需使用:assert(condition,message)
例如:assert(2 == 3,"failing because 2 does not equal 3")
这是可能的斯威夫特。不过,我应该注意到,苹果的设计理念是,应用程序永远不会崩溃,而是应该以“复杂”的方式处理所有错误。
您指的是正常的运行时断言。我问的是编译时断言,像C++中的static_assert。这用于静态可验证的表达式,当它们失败时会导致编译器错误。 – Neil
尼尔,对不起,我没有真正遵循 - 我没有使用static_assert。 Swift书中基础部分的最后部分简要地提到了断言。我没有看到任何关于编译时间的问题,就像你问的那样。我不知道他们是否支持他们。链接:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html –
这目前正在审查中Swift evolution,但目前不在语言中。
尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分并提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/19050719) – Maak
- 1. 无断言编译
- 2. GHC Haskell的编译时断言?
- 3. Swift中的断言
- 4. GCC是否有内置的编译时间断言?
- 5. 断言在交叉编译代码
- 6. 如何在Java中编译时断言某些东西?
- 7. 是否有可能在C++中使用编译时断言
- 8. Swift慢编译时
- 9. 如何在没有C++的情况下编译时间断言11
- 10. 语言间自动编译
- 11. 更多的文件在Swift中增加编译时间吗?
- 12. 编译时有/无断言时的javap差异
- 13. expectLastCall的断言时间
- 14. 编译在线编译时间错误?
- 15. C语言中:在编译
- 16. 静态断言检查编译时间常数不传递给宏
- 17. 在assert someBoolean();之间禁用断言的编译Java是否有区别?和verifySomeBoolean();后者包含断言?
- 18. 仅在Gradle项目中编译时风暴JAR编译时间
- 19. 方法编译时断言;仍然不能正常工作
- 20. 编译器/语言运行时与中间件
- 21. 检查常量阵列在编译时期间(C语言)
- 22. 编译io编程语言时出错
- 23. 从rspec中断言断言与断言
- 24. 在编译期间编译
- 25. 编译时间polynoms
- 26. 断言Android编程
- 27. 断言IE编号
- 28. 在D中编译时间码生成
- 29. 通过编译加快编译时间
- 30. Xcode在Swift编译错误
我不知道它如何有用。 Swift已经可以使用'where'来限制类似 –
的东西像#error? –
我只提到将泛型约束为潜在的实现方法,而不是我想要声明的。在我的例子中,我定义了大量相关的编译时间常量整数,我想在编译时进行验证。我通常会在C++中使用static_assert。 – Neil