• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[SwiftA]-问号&感叹号

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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里就不会了,而是判断下为不为空,如果为空就不执行转换。

 

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap