什么时候可以在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
答案 0 :(得分:2)
在点之前断开线。我每天都用其他语言编写这种代码。
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)
答案 1 :(得分:1)
如果注释延伸到下一行而没有您输入(或添加换行符),则注释可以是多行。
您可以在实际代码中点击新行的最简单位置是逗号分隔语句之间的括号/括号内。通过实际更改代码可以更多地分解语句,但不会直接想到任何其他内容。
通常情况下,在语句的一部分上使用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
答案 2 :(得分:1)
您可以拆分表达式!
当您将表达式分成多行时,记得始终将点放在新行上:
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中开启换行:
看起来像这样: