iOS Swift No.1 基础部分 - 可选绑定

第一章 基础部分

12. Optional Binding (可选绑定)

  • 12.3 Optional Binding ( 可选绑定 )

    可选绑定是用来找出一个可选类型里面是否存在一个值。如果有值就把它当作临时的常量或者变量来使用。我们可以用if和while语句来查看这个可选类型里面的值,然后把这个值提取出来当作常量或变量。if和while语句后面会具体详细提及。

    if语句具体在可选绑定的实现的范本

    // 范本代码实例
    if let constnatName = someOptional {
    	statements // 语句写在这里
    }
    

    可以用If语句来重写这个possibleNumber例子相对比强制展开。

    // possibleNumber现在是一个String类型的Integer
    let possibleNumber = "123"
    // if let用来写可选绑定
    if let actualNumber = Int(possibleNumber) {
    	print("String \(possibleNumber) has integer value \(actualNumber)")
    }else { // else用来输出没有integer的情况
    	print("String \(possibleNumber) could not be converted to integer")
    }
    
  • 读法和注意事项:
    If the optional Int returned by Int(possibleNumber) contains a value,
    set a new constant called actualNumber to the value contained in the optional.”

    如果转换成功输出If的语句反之则是else语句。结合上面的代码分解理解。
    1,先不要看上面对possibleNumber常量的定义。如果说这个Int(possibleNumber)它本身就能被转换成Integer的值或者它本身就包含一个Integer的值,
    2,在把它 ( Int(possibleNumber) )作为一个整体当作这个常量 ( actualNumber )的赋值结果,
    3,在用if条件语句判断是否这个值 ( Int(possibleNumber) )是否是一个Int的值,如果是就输出这个值反之输出else。这就是 if let (Optional Binding) 被用在可选绑定比要比这个强制站来 ( Forced Unwrapping )方便的地方。强制展开先要来确定这个optional到底有没有值再给常量或变量赋值麻烦而且还省代码量的地方。

  • 布尔值 ( true, false ) 在多个可选绑定中的不同用法

    // 用法1
    if let firstNumber = Int("4"), let secondNumber = Int("42"),
        firstNumber < secondNumber && secondNumber < 100 {
        print("\(firstNumber) < \(secondNumber) < 100")
    }
    

    从前一个例子里面也能知道这个给firstNumber和secondNumber分别绑定一个值,然后再让逻辑运算符 ( && ) 参与firstNumber和secondNumber做比较。所以这个时候firstNumber是4,secondNumber是42。先别管这个&&符号 先看firstNumber < secondNumbersecondNumber < 100 都是OK没有问题的,

    &&的意思是:逻辑值用来判断true 和 false 的只有当两边的值都是true或者都不是nil 的情况下这个整体逻辑运算才是true成立的, 如果任何一边的值是nil或者false这个整体的运算就是false。下面真个表格先列举出逻辑运算&&的情况。

  • 逻辑运算 && 的表格
    在这里插入图片描述

    // 用法2
    if let firstNumber = Int("4"){
    	if let secondNumber = Int("42"){
    		if firstNumber < secondNumber && secondNumber < 100{
    			print("\(firstNumber) < \(secondNumber) < 100")
    		}
    	}
    }
    
发布了12 篇原创文章 · 获赞 71 · 访问量 1303

猜你喜欢

转载自blog.csdn.net/weixin_45026183/article/details/104197341