在
“The Swift Programming Language.”书中,Apple提到在访问可选变量时使用if和let.
本书给出了以下代码:
var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName { greeting = "Hello,\(name)" }
使用if name = optionalName,而不是optionalName!= nil(并始终将其称为,optionalName),有什么好处?有什么区别,还是仅仅是惯例?
因为它还解包了可选值,所以这段代码:
if let name = optionalName { greeting = "Hello,\(name)" }
相当于:
if optionalName != nil { let name:String = optionalName! greeting = "Hello,\(name)" }
这种语言糖在Swift中被称为Optional Binding.
可选类型
在Swift T和T?是不是相同的类型,但可选T的基础值?类型可以很容易地实现使用!后缀运算符,例如:
let name:String = optionalName!
现在可以在需要String的地方使用,例如:
func greet(name:String) -> String { return "Hello,\(name)" } greet(name)
虽然这样做是安全的,但Swift确实允许你隐式转换为可选类型:
let name = "World" let optionalName: String? = name func greet(optionalName:String?) -> String? { if optionalName != nil { return "Hello,\(optionalName)" } return nil } //Can call with either String or String? greet(optionalName) greet(name)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。