为什么我会使用if和let,而不仅仅是检查原始变量是否为零? (迅速
发布时间:2020-12-14 05:45:16 所属栏目:百科 来源:网络整理
导读:在 “The Swift Programming Language.”书中,Apple提到在访问可选变量时使用if和let. 本书给出了以下代码: var optionalString: String? = "Hello"optionalString == nilvar optionalName: String? = "John Appleseed"var greeting = "Hello!"if let name
在
“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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |