2

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

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

错误:可选类型“字符串?”的值 未拆封;你的意思是用'!' 或者 '?'?返回 fmt.stringFromNumber(展开)

4

1 回答 1

8

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

return fmt.stringFromNumber(unwrapped)!

这2个有区别:

return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!
于 2015-11-28T04:59:41.737 回答