Swift基础语法学习总结(转)
Swift基础语法学习总结
1.基础
1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释.
1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的.
1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开.
1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零.
1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载.
1.6) typealias 可以为一个类型指定另外一个名字,这样可以清晰的表达类型的意义.typealias newType = OldTypeName
1.7) assert 断言表示自己抛出异常,assert 第一个参数表示 通过而不抛异常的条件,第二个参数表示提示,第二个参数可以没有
1.8) swift中的 = 赋值运算符没有返回值,所以不会犯 if a = 3 {}这样的错误了,运算符前后加空格,以免xcode不能识别
2.变量
2.1) let 定义常量,var 定义变量,let定义的必须在声明时指定初始值,普通的var声明也必须赋初始值.
2.2) let 声明的变量不可再改变,而var变量可以再改变,但是你不能再声明一个已经声明的常量或变量.
2.3) 可以在一行同时声明多个常量或变量,用逗号隔开;如果每个常量对应一个var或let只需要用分号隔开即可.
2.4) 每个常量和变量都一定会有固定的类型,如果没有指定类型,swift会根据后面的赋值类型来推断.
2.5) swift的命名不能使用保留字和箭头/开头不能用数字,没有其它任何规定,甚至都可以使用小狗小猫命名.
2.6) 如果你想使用关键字来命名是不允许的,但是你可以在前后加上``来命名,比如`let`,非关键字加``命名也可以的.
2.7) swift里可以声明元组,类型类似于(Int, String),你可以用var声明也可以用let声明,里面两个都会是变量或者常量
2.8) 而元组的方式和直接分开声明两个变量和常量没多大区别,你可以把其中的变量拿出来单独用或当元组用,混合用也可以.
2.9) 可以用元组名直接通过下标索引直接来访问元组里对应的值,比如aaa.0 aaa.1
2.10) 你可以在元组中跟元素命名,比如(code:404,message:"Not Found"),然后你就可以用aaa.code 和 aaa.message来访问
3.类型
3.1) int型的UInt8和Int32 都可以通过min和max来取最大值和最小值
3.2) Double是64位浮点数,Float是32位浮点数,对小数自动推断是Double类型,除非是指定过类型的
3.3) 可以跟指定为浮点类型的常量或变量赋一个整数值但是不能是整数变量,它会自动转换成浮点数.
3.4) 显示指定类型的变量或常量不能跟它赋值一个不同类型的值,它不能做自动转换,除了跟浮点类型赋值一个整数数值
3.5) 在指定类型后加一个?表示可选类型,它的意思是它可能为没有值为nil,然后你可以通过可选绑定或者判断是否为空来使用它.
3.6) 如果是一个class的可选类型,你可以通过?.访问它的属性和方法,它是通过前者是否会相应后面的方法,如果能响应则执行,不能则返回nil
3.7) ?其实是个语法糖,比如String?类型等价于Optional<String>类型,只是方便写而已,他和String类型本质是不同的
3.8) 如果你不想用判断是否为空或者用可选绑定或者用.?来访问它,你可以用最直接最简单的!强制解包来使用,但前提是能保证非空
3.9) 如果一个可选量没有值又强制解包会报错,一个可选类型会隐式赋值为nil,你也可以在使用中赋值为nil
3.10) 之所以需要有可选类型是因为swift是类型绝对安全的语言,它需要你在使用变量时一定有值,但是这种可选类型太麻烦,所以产生了!类型,!类型本质应该就是可选类型
3.11) 声明为!可选类型,也可以不做初始化,它相当于你在每次使用可选类型的时候加上了!进行强制解包,你就不需要再自己加!了,你需要自己保证它不为空,否则使用会出错
4.字符串
4.1) ... 表示闭区间/ ..< 表示开区间, == 表示值相等/=== 表示引用相同, + 可以直接加字符串或数组
4.2) swift中的string是值类型,它在做常量变量赋值或函数中进行传递时都会做值拷贝,都是一个新的副本,swift只有在必要的情况下做拷贝
4.3) 可以用for in 遍历字符串,用 count全局函数计算字符数,用isEmpty属性判断是否是空字符串,有hasPrefix判断前缀(后缀等)
4.4) 可以用startIndex和endIndex获取开始和结束下标,用数组和下标的形式访问单个字符;还可以通过\()的方式生成字符串
5.数组
5.1) swift中的数组可以用[String]和Array<String>来声明,它们是同一个意思,赋值也直接用中括号[]表示就可以了,里面的值需要是同一个类型
5.2) array 有count/isEmpty等属性,有append/insert/remove等方法,它可以直接 + 一个数组,它可以通过下标和下标区间来取值,区间取到的是一个数组
5.3) for item in shoppingList / for (index, value) in enumerate(shoppingList) 两种遍历方式,后面一种会知道下标
5.4) 可以通过[Double](count: 3, repeatedValue: 3.3) / Array(count: 3, repeatedValue: 2.5) 初始化一个数组
5.5) 数组也是值传递,如果把数组a赋值给数组b,a和b就是两份拷贝,修改相互不会有影响
6.字典
6.1) 字典是通过 [String : String] / Dictionary<String, String> 声明的,形式也是用[a:b,c:d]这种形式,通过键访问值
6.2) 可以直接通过a[b] = c 这种方式增加一个键值对,通过updateValue和removeValueForKey来增加删除键值对
6.3) 可以用for (airportCode, airportName) in airports / for airportCode in airports.keys 遍历键值对或键或值
6.4) 可以直接赋值 [:] 来清空字典,键值是可以为Int的;和string,array一样,dictionary也是值拷贝
7.Set
7.1) 用Set<Int> 声明Set,和数组一模一样跟它赋值,也可以通过赋值[]清除,也必须是同一类型,也有insert/contains方法,isEmpty属性
7.2) Set也有for in 遍历,有取两个集合的差交等做做排列的方法,也有判断子集超集等方法
8.For循环
8.1) for index in 1...5 的这个index只是在当前这个循环的作用域内,如果for循环外面也有一个index,随便修改也不会和它又什么影响
8.2) for _ in 1...10 如果不需要循环的这个索引可以用下划线_代替,在swift中只要不需要那个值的一般都可以用_代替
8.3) for var index = 0; index < 3; ++index 这种for循环也还是可以的
9.Switch语句
9.1) swift 中的switch必须穷举所有的可能,否则必须加default,穷举的时候在一个case后面可以放很多可能值,用逗号隔开就好
9.2) 穷举可以是用...和..<表示的一个区间,对于元组可以一个用_通配符,另一个匹配,或者两个都匹配,或者两个都是区间(只有一个元素也可以做值绑定)
9.3) 做统配的时候可以用var x/let x,或 let (x,y) 进行值绑定,其中var声明的可以修改
9.4) 当做let 做值绑定的时候可以在后面加上 where做条件判断.switch 不需要用break防止穿透,但是它还是会去下一个case判断条件去匹配,使用break还是可以直接跳出switch
9.5) 在switch同样可以使用break/continue跳出一个标签
Swift基础语法学习总结(转)的更多相关文章
- Swift基础语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...
- Swift基础语法学习总结一
1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. ...
- Swift基础语法学习总结二
1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返 ...
- Swift高级语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如 ...
- Swift高级语法学习总结(转)
Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...
- Python 基础语法学习(第一讲)---类的使用
[写在前面]:其实自学python有一段时间了,但是一直没想起来要写博客来记录自己的学习,今天才感觉要写点什么让自己学的更扎实一点,所以从今天开始更新python自学系列,希望看见文章的大佬们可以指点 ...
- Java基础语法学习
Java基础语法学习 1. 注释 单行注释: //单行注释 多行注释: /*多行注释 多行注释 多行注释 多行注释 */ 2. 关键字与标识符 关键字: Java所有的组成部分都需要名字.类名.变量名 ...
- Swift基础语法(常量变量、数据类型、元组、可选、断言)
本文来自Swift中文开发组,感谢翻译者的分享. 本文将分几部分对Swift对ios的语法做讲解.本文为第一节,主要讲解基础语法. 常量和变量 常量和变量把一个名字(比如maximumNumberOf ...
- Swift基础语法
简介 特点 (1)优于OC,快速,安全 (2)取消了预编译指令包括宏定义(OC用的太多了) (3)取消了OC指针和不安全访问的使用(看不到星星了) (4)舍弃 Objective-C 早期应用 Sma ...
随机推荐
- 一些kvm虚拟机操作的命令
创建一个40G的raw的磁盘 seek= 将raw磁盘转化为qcow2 qemu-img convert -f raw -O qcow2 disk.img disk.qcow2 将qcow2文件再压缩 ...
- iOS开发masonry的一些使用简介
从一开始的纯代码计算frame,虽然自认为计算frame 刚刚的,但是到后来还是开始xib的自动约束和手动约束与frame搭配使用,经历这几种方式,大概一年前开始普遍使用masonry来代码约束之后也 ...
- vim - buffer
1. buffer switching http://vim.wikia.com/wiki/Easier_buffer_switching :buffer:ls:files 2. vim defaul ...
- gitlab改用ssh操作
1.配置ssh http://blog.csdn.net/xyzchenxiaolin/article/details/51853319http://blog.csdn.net/r8hzgemq/ar ...
- centos7最小安装后常常需要添加的命令
本人下载的最小镜像文件下载地址:http://pan.baidu.com/s/1kUD2jbT 原文地址:http://blog.csdn.net/nmgrd/article/details/5176 ...
- EF 延迟加载和预先加载
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本节探讨延迟加载和预先加载 Entity Frame ...
- 总结ThinkPHP使用技巧经验分享(三)
add方法返回主键(id)的值在往数据表中添加数据时调用add方法,默认返回值就是刚添加的id值,就不用再去查询了. save方法返回值的判断在修改数据时,如果修改成功返回的是被修改的记录数0,1,2 ...
- servlet获取参数时,request.getParameter("id")参数获取失败
servlet获取参数时,request.getParameter("id")参数获取失败,这里的参数是“index”里面href中的参数 要注意,取不到值,是不是要取的参数有没有 ...
- [转]Raspberry Pi树莓派无线网卡配置[多重方法备选]
要想让树莓派方便操作,肯定需要配置无线网卡,这样可以大大增强树莓派的移动性和便利性,其实配置无线网卡基本就是和普通linux平台下配置无线网卡一样,几种方法大同小异,具体如下: 一.第一种方法:通过配 ...
- 谁也无法挡住我访问Google---使用Nginx反向代理攻略
展示最终成果: 浏览器打开 http://www.manda13.com/(慢搭搜索)这个是自己搭建的百度网盘搜索,欢迎测试 点击右上角“原版Google”,就可以访问Google. 是不是很方便. ...