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:
中打开换行
它看起来像这样:
什么时候可以在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:
中打开换行它看起来像这样: