为什么需要在最终的return语句中解包变量unwrapped?警卫不应该处理这个吗?

func test() -> String {
    let fmt = NSNumberFormatter()
    let myValue:Double? = 9.50
    guard let unwrapped = myValue else {
        return ""
    }
    return fmt.stringFromNumber(unwrapped)
}

错误:可选类型“字符串”的值?没有包装;你是说要
用 '!'要么 '?'?
返回fmt.stringFromNumber(展开)

最佳答案

不是变量unwrapped。它是stringFromNumber:它返回一个可选字符串。但是您的函数返回一个字符串,因此您必须解开包装:

return fmt.stringFromNumber(unwrapped)!

这些2之间有区别:
return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!

关于ios - 为什么不保护创建未包装的var?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33967795/

10-08 21:06