我在iOS 15上使用Swift Playgrounds,我对这行的多个语句感到困惑:
let toSave = self.read(fromDocumentsWithFileName: "colors.txt") + "\n" + color.toHex(alpha: false) ?? "error saving")
我得到错误“一行上的连续语句必须用'分隔;'”我试着把表达式改变到它自己的变量上,并在“??”但没有运气。
0sgqnhkj1#
关于Swift编译器需要注意的一件事:一旦它对您的代码感到困惑,它给出的错误消息可能非常荒谬。Rob在他的评论中很好地解释了这个案例,但是你也会得到看起来完全错误的错误。当你从Swift编译器中得到一个没有意义的错误时,忽略错误的字母,只把它读成“我的代码有问题。我得自己想办法。”
第一件要做的事情是在有问题的代码中搜索语法错误。在你的例子中,你有一个额外的右括号,正如其他人指出的那样。试着把它取下来。然后扫描任何其他错误。如果你找不到,那就简化。将你的长复合语句分解成更小的片段。如果你必须创建一些局部变量/常量,那就去做吧。(我更喜欢简短的陈述,无论如何。它们更易于阅读和调试。一个优化编译器通常会优化掉像临时变量这样的东西,所以写长而复杂的语句并没有太大的好处。
1条答案
按热度按时间0sgqnhkj1#
关于Swift编译器需要注意的一件事:一旦它对您的代码感到困惑,它给出的错误消息可能非常荒谬。
Rob在他的评论中很好地解释了这个案例,但是你也会得到看起来完全错误的错误。
当你从Swift编译器中得到一个没有意义的错误时,忽略错误的字母,只把它读成“我的代码有问题。我得自己想办法。”
编辑:
第一件要做的事情是在有问题的代码中搜索语法错误。在你的例子中,你有一个额外的右括号,正如其他人指出的那样。试着把它取下来。然后扫描任何其他错误。如果你找不到,那就简化。将你的长复合语句分解成更小的片段。如果你必须创建一些局部变量/常量,那就去做吧。
(我更喜欢简短的陈述,无论如何。它们更易于阅读和调试。一个优化编译器通常会优化掉像临时变量这样的东西,所以写长而复杂的语句并没有太大的好处。