如何同时专门化泛型和测试可选作为单行?
How to simultaneously specialize a generic and test for optional as a single line?
有没有办法在一行中专门化泛型并测试可选的?换句话说,将第 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
}
有没有办法在一行中专门化泛型并测试可选的?换句话说,将第 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
}