【发布时间】:2018-03-18 15:37:37
【问题描述】:
我想在编译我的 Swift 代码时忽略错误。例如,您正在编写一个尚未在您的应用程序中使用的类并且其中有错误,或者如果编译器只是对所有这些安全措施感到愚蠢,那么您仍然可以编译它吗?你可以make编译器编译它吗,即使它有点hack-ish?
或者换句话说,我怎样才能让错误被视为警告?
【问题讨论】:
-
编译过程中的错误是程序无法恢复的问题——与警告不同,错误表明编译器无法继续编译,因为生成的程序没有意义.你能举一个你正在尝试做的事情的具体例子吗?
-
例如,为什么不能有一个在
super.init调用时未初始化的let常量?这很愚蠢。 根据超类的定义,它不在超类中使用。无论如何,我不在乎是否有意义。我确实不询问编译器是否有意义。我希望它编译,而不是质疑它的意义。 -
@Nullcaller 这个错误实际上是有道理的。
super.init,一旦完成了其所有属性的初始化,就完全可以在其自身上调用方法。您可能以依赖于letvar; 的方式覆盖了该方法;如果您在初始化该 var 之前调用super.init,您将遇到麻烦。这与在调用函数/方法之前必须完全初始化self完全一致——你不知道它会做什么,这可能取决于你是否完全初始化。 -
您熟悉未定义行为的概念吗?在要求编译器不检查“有意义”时,您要求的是具有未定义行为的可执行文件。也就是说,Swift 确实提供了一种“定义明确的未定义行为”,可以让你绕过一些初始化规则:隐式展开的可选属性。但是,您不应该习惯在生产代码中使用它们。它们是针对特定情况的解决方法,而不是通过编译器强制执行不完整代码的方法。
-
像 Python 或 Ruby 这样的解释型语言可以为您提供所需的灵活性和静态分析。
标签: swift compiler-errors compilation