Ios 为什么';t guard是否创建未包装变量?
为什么我需要在最终返回语句中展开变量Ios 为什么';t guard是否创建未包装变量?,ios,swift2,forced-unwrapping,guard-statement,Ios,Swift2,Forced Unwrapping,Guard Statement,为什么我需要在最终返回语句中展开变量unwrapped?难道警卫不应该处理这件事吗 func test() -> String { let fmt = NSNumberFormatter() let myValue:Double? = 9.50 guard let unwrapped = myValue else { return "" } return fmt.stringFromNumber(unwrapped) } 错误:可选
unwrapped
?难道警卫不应该处理这件事吗
func test() -> String {
let fmt = NSNumberFormatter()
let myValue:Double? = 9.50
guard let unwrapped = myValue else {
return ""
}
return fmt.stringFromNumber(unwrapped)
}
错误:可选类型“字符串”的值未展开;你是故意的吗
使用“!”还是“?”?
返回fmt.stringFromNumber(未包装)
它不是变量
展开的
。它是stringFromNumber
:它返回一个可选字符串。但函数返回字符串,因此必须展开:
return fmt.stringFromNumber(unwrapped)!
这两种方法之间有区别:
return fmt.stringFromNumber(unwrapped!)
return fmt.stringFromNumber(unwrapped)!