[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里就不会了,而是判断下为不为空,如果为空就不执行转换。
有人直接把?表示为判断解析,!表示为强制解析
[Swift A]-问号&感叹号的更多相关文章
- Swift中的感叹号( ! )与问号( ? )之谜
基本了解 在Swift代码会经常看到定义属性或方法参数时类型后面会紧跟一个感叹号( ! )或问号( ? ), 刚开始接触Swift的童鞋就可能不太明白之代表什么意思,一头雾水,开始凌乱了. 本文将带你 ...
- swift 学习笔记[1]
最近在IMOOK(网站)上自学了下swift , 总结下swift相对其他语言的不同之处 , 方便熟悉其他语言的程序员,熟悉swift语言的特性. 1. swift 的特别之处就是可以在原有的类上 , ...
- Lisp和SICP
大概不少programmer都看过<黑客与画家>,作者用了整整一章的篇幅讨论Lisp的强大.我自然就会手痒痒. 几个月前,几天内攻城略地搞定了Python,用的方法便是 ...
- windows下的 gvim - su'blime text 的使用
su'blime [s2'blaim] adj. n. 崇高的, 高尚的, 令人尊敬的; 壮丽的, 宏伟的; 出众的; 崇高的人, 壮丽的事物等等. a sublime mission. a subl ...
- 随手记Swift基础和Optional Type(问号?和感叹号!)
距离Apple推出Swift已经有几天了,网上也时不时出现"急招Swift程序猿,要求有一天工作经验"的帖子. 看到Swift,除了苹果放的另外一门语言的链接(http://swi ...
- swift 中的问号跟感叹号
?: 变量在使用过程中可能存在空值,则需要用?标记,否则赋空值会报错 ? 1 2 var mustNoNilValue: String = "Swift" var canNilVa ...
- Swift中的问号?和感叹号!
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使用变量之前不进行初始化就会报错: var ...
- Swift 总结使用问号(?)和感叹号(!)-备用
在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下. 1. 可选类型中的问号(?) 声明这个类型是可选类型,访问这种类型的变量或常量时要使用感叹 ...
- 《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号(!)
原创文章,欢迎转载.转载请注明:关东升的博客 在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下. 1. 可选类型中的问号(?) 声明这个类型是 ...
随机推荐
- [CodeForces-708E]Student's Camp
题目大意: 一个n*m的墙,被吹k天风,每块靠边的砖都有p的概率被吹掉. 如果上下两行没有直接相连的地方,我们则认为这一堵墙已经倒塌. 问最后墙不倒塌的概率(模意义). 思路: 动态规划. 用f[i] ...
- hdu 4790 Just Random
思路:对于a<=x<=b,c<=y<=d,满足条件的结果为ans=f(b,d)-f(b,c-1)-f(a-1,d)+f(a-1,c-1). 而函数f(a,b)是计算0<= ...
- Windows用WinDbg分析蓝屏dump文件查找原因(转)
WinDbg官方下载: http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi http://msdl. ...
- JAVA EE 博客实例
http://www.cnblogs.com/hoojo/category/276244.html
- CMAKE MYSQL
http://www.blogjava.net/kelly859/archive/2012/09/04/387005.html
- C# 怎么获取所有打开的窗体
FormCollection collection = Application.OpenForms; foreach(Form form in collection){ if(form.Visi ...
- ASPNET CORE初探
ASP.NET Core 开发-中间件(Middleware) ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件 ...
- 《CUDA并行程序设计:GPU编程指南》
<CUDA并行程序设计:GPU编程指南> 基本信息 原书名:CUDA Programming:A Developer’s Guide to Parallel Computing with ...
- Eclipse中安装Maven插件 M2eclipse
下面是官网的说明,基本上的意思下面有图片说明. To install m2eclipse, use the following Eclipse update site to install the c ...
- iOS:沙盒、偏好设置、归档、解归档
一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Ca ...