为什么 guard 不创建未包装的 var?
Why doesn't guard create unwrapped var?
为什么我需要在最后的 return 语句中解包变量 unwrapped
?守卫不应该处理这个吗?
func test() -> String {
let fmt = NSNumberFormatter()
let myValue:Double? = 9.50
guard let unwrapped = myValue else {
return ""
}
return fmt.stringFromNumber(unwrapped)
}
error: value of optional type 'String?' not unwrapped; did you mean to
use '!' or '?'?
return fmt.stringFromNumber(unwrapped)
不是变量unwrapped
。它是 stringFromNumber
:它 returns 是一个可选字符串。但是你的函数 returns 是一个字符串,因此你必须解包:
return fmt.stringFromNumber(unwrapped)!
这两个有区别:
return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!
为什么我需要在最后的 return 语句中解包变量 unwrapped
?守卫不应该处理这个吗?
func test() -> String {
let fmt = NSNumberFormatter()
let myValue:Double? = 9.50
guard let unwrapped = myValue else {
return ""
}
return fmt.stringFromNumber(unwrapped)
}
error: value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'? return fmt.stringFromNumber(unwrapped)
不是变量unwrapped
。它是 stringFromNumber
:它 returns 是一个可选字符串。但是你的函数 returns 是一个字符串,因此你必须解包:
return fmt.stringFromNumber(unwrapped)!
这两个有区别:
return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!