有没有一种方法可以把通用和测试可选在一行中进行特殊化?换句话说,让第1行和第2行I-作为一行代码?
func getTo<T>() -> T? {
// Real code here replaced by setting nil for clarity
nil
}
// Working version
// Line #1
let _r: [Any]? = getTo()
// Line #2
if let r = _r {
for e in r {
print ("\(e)")
}
}
// Not working single line version
// Single line
if let r: [Any]? = getTo() {
// Error here: error: for-in loop requires '[Any]?' to conform to 'Sequence'; did you mean to unwrap optional?
//for e in r {
// ^
for e in r {
print ("\(e)")
}
}
PS:抱歉,初始代码被截断了。
是的,这很有效。
guard let r: [Any] = getTo(breadcrumbs: ["here"]) else {
return nil
}