Как одновременно специализировать generi c и тестировать на опциональность как одну строку? - PullRequest
1 голос
/ 07 мая 2020

Есть ли способ специализировать generi c и проверить наличие необязательного в одной строке? Другими словами, иметь строки № 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: Извините, исходный код был усечен.

1 Ответ

1 голос
/ 07 мая 2020

Да. Это работает:

guard let r: [Any] = getTo(breadcrumbs: ["here"]) else {
    return nil
}
...