如何同时将通用和测试可选作为一行进行特殊化?

问题描述 投票:1回答:1

有没有一种方法可以把通用和测试可选在一行中进行特殊化?换句话说,让第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:抱歉,初始代码被截断了。

swift generics optional
1个回答
1
投票

是的,这很有效。

guard let r: [Any] = getTo(breadcrumbs: ["here"]) else {
    return nil
}
© www.soinside.com 2019 - 2024. All rights reserved.