Swift基础语法学习总结
Swift基础语法学习总结
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基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
- 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 ...
随机推荐
- git总是出现untracked content怎么解决?
git rm --cached vendor/plugins/open_flash_chart_2 rm -rf vendor/plugins/open_flash_chart_2/.git # BA ...
- SharePoint 2013 网站应用程序、网站集、网站知识整理
网站应用程序:Web 应用程序是一种可以通过Web访问的应用程序.我们自己以前用VS开发的Web应用程序一般是通过人工部署到IIS上的,而SharePoint的Web应用程序是由SharePoint安 ...
- asp.net identity 2.2.0 中角色启用和基本使用(五)
建立控制器UsersAdminController 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:UsersAdminC ...
- 14交互活动:XHTML表单
表单基本上就是带有一块输入信息区域的网页.当提交表单时,表单中的信息被打成一个数据包发送给web服务器,web应用程序对之经行处理.处理完成后,可以获得另一个相应页面. 使用<form>元 ...
- SQLSERVER2012 附加数据库重名的问题
SQL2012附加数据库时如何更改数据库名称呢 方法一: 在“附加为”那一栏填写新的数据库名称就可以 方法二: 使用脚本 附加时点击脚本会自动生成附加脚本 直接修改database的名称即可!
- mysql 三种恢复方式
为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有 ...
- UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
- 对于指定区块div,如何区分区块内的点击 和 区块外的点击?
需求:对于区块div内点击事件, 需要展示区块内的附属操作区块,对于区块外的点击, 需要将前面说的附属操作区块隐藏掉. 分析:对于一般的HTML控件,有标准的js事件接口, focus和blur,来实 ...
- HTML5中的时间类型,另外EL表达式的时间值来读取时间,并且还可以更改时间
HTML5规范里只规定date新型input输入类型,并没有规定日历弹出框的实现和样式.所以,各浏览器根据自己的设计实现日历.目前只有谷歌浏览器完全实现日历功能.相信这种局面很快就会结束,所有的浏览器 ...
- 十一、Java基础---------内部类与匿名内部类
内部类分为普通内部类(有名)和匿名内部类.普通内部类分为成员内部类.局部内部类.静态内部类(嵌套内部类).顾名思义,内部类就是定义在一个类内部的类.什么时候都会使用内部类呢?当我们定义一个类,发现内部 ...