• Swift中的可选变量


    今天了解到Swift中可选变量,也即:

    var  a?  此处的a就是个可选值,意思是该值可能是缺失的.

    有值,等于 x,或者没有值。

    见这个实例,来自http://www.swiftmi.com/swiftbook_cn/chapter2/01_The_Basics.html 里的可选类型部分

    Swift 的String类型有一个叫做toInt的方法,作用是将一个String值转换成一个Int值。然而,并不是所有的字符串都可以转换成一个整数。字符串"123"可以被转换成数字123,但是字符串"hello, world"不行。

    下面的例子使用toInt方法来尝试将一个String转换成Int:

    let possibleNumber = "123" 
    let convertedNumber = possibleNumber.toInt() 
    // convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int" 
    

      

    因为toInt方法可能会失败,所以它返回一个可选的(optional)Int,而不是一个Int。一个可选的Int被写作Int?而不是Int。问号暗示包含的值是可选,也就是说可能包含Int值也可能不包含值。(不能包含其他任何值比如Bool值或者String值。只能是Int或者什么都没有。)

    if 语句以及强制解析

    你可以使用if语句来判断一个可选是否包含值。如果可选有值,结果是true;如果没有值,结果是false。

    当你确定可选包确实含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示“我知道这个可选有值,请使用它。”这被称为可选值的强制解析(forced unwrapping):

    1 if convertedNumber { 
    2     println("(possibleNumber) has an integer value of (convertedNumber!)") 
    3 } else { 
    4     println("(possibleNumber) could not be converted to an integer") 
    5 } 
    6 // 输出 "123 has an integer value of 123" 

     

    注意:使用!来获取一个不存在的可选值会导致运行时错误。使用!来强制解析值之前,一定要确定可选包含一个非nil的值。

    -------更新---------

    import Foundation
    
    var str1 = "1234"
    
    var convertedNumber = str1.toInt()
    
    if (convertedNumber != nil) { // 最新的用法,含义是 - 如果可选类型可以成功转化成Int类型,而不是值缺失
        
        println("(convertedNumber) have a value of (convertedNumber!)" )
    }
    
    
    if let AB = convertedNumber {  // 如果赋值成功,则说明可选类型convertedNumber转化成功
        
        println("(convertedNumber) have a value of (AB)" )
        
    }
  • 相关阅读:
    使用httperrequest,模拟发送及接收Json请求
    VI/VIM 常用命令
    Robot Framework开发系统关键字详细
    Python logging模块使用记录
    反编译app方法
    python+appium使用记录
    查看apk包及Activity名方法
    Robot Framework使用技巧
    git 常用使用及问题记录
    多个git账户生成多份rsa秘钥实现多个账户同时使用配置
  • 原文地址:https://www.cnblogs.com/summer2012/p/4052694.html
Copyright © 2020-2023  润新知