为什么我会使用if和let,而不仅仅是检查原始变量是否为零? (迅速)

前端之家收集整理的这篇文章主要介绍了为什么我会使用if和let,而不仅仅是检查原始变量是否为零? (迅速)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
“The Swift Programming Language.”书中,Apple提到在访问可选变量时使用if和let.

本书给出了以下代码

  1. var optionalString: String? = "Hello"
  2. optionalString == nil
  3.  
  4. var optionalName: String? = "John Appleseed"
  5. var greeting = "Hello!"
  6. if let name = optionalName {
  7. greeting = "Hello,\(name)"
  8. }

使用if name = optionalName,而不是optionalName!= nil(并始终将其称为,optionalName),有什么好处?有什么区别,还是仅仅是惯例?

因为它还解包了可选值,所以这段代码
  1. if let name = optionalName {
  2. greeting = "Hello,\(name)"
  3. }

相当于:

  1. if optionalName != nil {
  2. let name:String = optionalName!
  3. greeting = "Hello,\(name)"
  4. }

这种语言糖在Swift中被称为Optional Binding.

可选类型

在Swift T和T?是不是相同的类型,但可选T的基础值?类型可以很容易地实现使用!后缀运算符,例如:

  1. let name:String = optionalName!

现在可以在需要String的地方使用,例如:

  1. func greet(name:String) -> String {
  2. return "Hello,\(name)"
  3. }
  4.  
  5. greet(name)

虽然这样做是安全的,但Swift确实允许你隐式转换为可选类型:

  1. let name = "World"
  2. let optionalName: String? = name
  3.  
  4. func greet(optionalName:String?) -> String? {
  5. if optionalName != nil {
  6. return "Hello,\(optionalName)"
  7. }
  8. return nil
  9. }
  10.  
  11. //Can call with either String or String?
  12. greet(optionalName)
  13. greet(name)

猜你在找的Swift相关文章