zoukankan      html  css  js  c++  java
  • [Swift A]-问号&感叹号

    1.必须赋值的变量,或普通变量

    var month:Int
    println("month:(month)")
    

     上面这2句代码会提示报错,因为没有赋值

    2.再看看如下写法

    var month:Int?
    println("month:(month)")
    

     打印的值为:month:nil 

     即java里面的null

    3.再看看这个代码

    var month:Int!
    println("month:(month)")
    

     输出的和2一样

    4.总结1

    问号和感叹号都可以标识变量为可选变量或可空变量

    5.问号和感叹号的区别

    var year:Int = 2014;
    
    var month:Int?
    println("month:(month)")
    
    year = month
    

     输出:month:nil

              fatal error: Can't unwrap Optional.None

    .....

    var year:Int = 2014;
    
    var month:Int? = 12;
    println("month:(month)")
    
    year = month!
    

     上面这个代码就可以正常运行

    如果把感叹号换成问号就会提示错误

    6.总结2

    !可取可选变量的非空值,?就不可以这样

    7.可选变量可以当条件来使用(非空为真,空为假),而普通变量不行

    var a:Int?
    if a {
        println("1");
    } else {
        println("2");
    }
    

     8.可选变量的类型转换

    代码1:

    var a:String? = "22"
    println("a:(a?.toInt())");
    

     代码2:

    var a:String?
    println("a:(a!.toInt())");
    

     代码3:

    var a:String?
    println("a:(a?.toInt())");
    

     解释:?有点类似java里面的 a == false ? "false" :"true" 。 代码1能正常运行,代码2是强制拿a的值去转换,而代码3里就不会了,而是判断下为不为空,如果为空就不执行转换。

    有人直接把?表示为判断解析,!表示为强制解析

  • 相关阅读:
    MVC3 string equlas int 方法
    AjAx ComponentArt. NavBar 的用法
    GridView重写排序、分页 (原作)
    如何用 Calendar 控件来做日程管理
    无刷新仿google波形扭曲彩色Asp.net验证码
    Asp.net 2.0图形报表制作chart(原作)
    WinForm.Net 界面皮肤使用资源(C#原作)
    java Date类用法(转)
    画类图
    LCA tarjan hdu 2586代码详细步骤(转)
  • 原文地址:https://www.cnblogs.com/royi123/p/3834909.html
Copyright © 2011-2022 走看看