在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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里就不会了,而是判断下为不为空,如果为空就不执行转换。
有人直接把?表示为判断解析,!表示为强制解析 |
请发表评论