swift 中的多行表达式

Multiline expressions in swift

什么时候可以在swift中编写多行表达式?

到目前为止,我遇到了 属性 链接多行的问题。

// is it possible to write this statement over multilines, can you split after or before a dot?
return self.anObject.varx(a: true, b: false).vary.varz.veryLongVariableName

如果注释延伸到下一行而不用按回车键(或添加换行符),则注释可以是多行。

您可以在实际代码中最简单地换行的地方是逗号分隔语句之间的 brackets/parenthesis 内部。可以通过实际更改代码来进一步分解语句,但没有其他直接想到的。

通常认为更好的做法是在语句的一部分上使用 let 语句,就像您所做的那样,将其拆分并使其更具可读性。

无论您实际上 运行 遇到什么问题,都与多行无关,除非您实际上已经足够长,可以收到警告说它太难计算了。该警告总是能够通过将代码分成更多部分来修复。谁想要 1 行 200 个字符?

let object = self.anObject
let varx = object(a: true,
     b: false)
let vary = varx.vary
let varz = vary.varz
let longName = varz.veryLongVariableName
return longName

在点之前换行。我每天都用其他语言写这种代码。

class Foo {
    var bar: Foo {
        return self
    }

    var veryLongNameVariable: Foo {
        return self
    }

    func method(i: Int, _: Int) -> Foo {
        return self
    }
}

let f = Foo()
let f2 = f
    .bar
    .method(3, 4)
    .bar
    .bar
    .method(0, 2)
    .veryLongNameVariable
    .veryLongNameVariable

print(f2)

可以拆分表达式!

当您将一个表达式拆分为多行时,请记住始终将点放在新行上:

let s = ""
s.capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString
    .capitalizedString

如果你把点放在同一行,它不会编译:

var s = ""
s.capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString.
    capitalizedString

您可以做的另一件事是在 Xcode:

中打开换行

它看起来像这样: