http://www.imooc.com/learn/127 

《玩儿转swift》 慕课网教程笔记,自己根据2.1的语法做了更新。

I.

1.通过playground来学习、熟悉swift语言的特性。

2.元组  声明时可以每一个元素有名字,之后可以用.访问

var t=(x:,y:,z:"hi")  // var t : (Int,Int,String)
var (a,_,_)=t // _ 匿名
print(t.) // or t.x

3.可选类型

用法: .toInt 返回可以是nil

强制类型转换不能为可选型。

可选型的解包:  把可选型转化为肯定型,加!号即可。

if let x=name {}也可用来解包

II.

1. Int.min

2.a===b  or  a!==b  类型比较

3.Nil Coalescing Operator    a ?? b  注意空格

4.范围运算符 a...b  a..<b

5.for循环内部,index是常量

III.

1.String返回长度:   .characters.count    好复杂。

2.插值"\()"

3.    .hasPrefix     .hasSuffix

.capitalizedString

.uppercaseString    .lowercaseString

4.trim

5.split    .componentsSeparatedByString

6.join     .join

7.Range & String.Index

    .rangeOfString    可选类型 som 23..<25

    .startIndex   .endIndex

    .startIndex.advancedBy(7)
用range取subString、insert、remove、replace等操作
 
IV.
1. Array  只能存一种类型?
声明类型Array<String> or [String]
初始化空表:(1)var array=[Int]()    (2) var array: [Int]=[] 
清空:  array=[]
赋值:  array=[Int](count:10,repeatedValue:8)
操作:  .count  .isEmpty  .append  += [x]  .insert  .removeAtIndex(0)  .removeLast()  .removeRange    array[2...4]=["hi"]  .sort(<)
遍历:(1)for in  (2)0..<array.count  (3)enumerate(array)      
 
2.Dictionary 
声明类型Dictionary <String,Int> or [String:Int]
初始化空表:(1)var dictionary =[Int:String]()    (2) var array: [Int:String]=[] 
清空:  dictionary =[:]
操作:  .count  .isEmpty .updateValue  .removeValueForKey  
dictionary[x]返回的是可选类型(无则返回nil)    删除value就是设为nil
遍历: (1)for(key,value)in    (2) .keys  (3).values                  // 强制类型转换Array(dictionary.keys)   
 
V.
判断不需要加(),代码段必须加{}
1.循环结构
(1)for in   (2)for  ;  ;  ;  (3) while     (4) do while
2.选择结构
(1)if else  (2)switch 不需要写break,相同分支用逗号在同一case里
 switch case:     
(1)case (1,1)、(_,1)、(-2...2,-2...2)、value binding  case (let x,1)
(2)case let(x,y) where x==y:
(3)空则显式break
(4)fallthrough       default
3.break、continue可以指定跳出哪一层循环
mainLoop: for t in m{
for o in t{
if o=={
break mainLoop;
}
}
}

VI.func

1.func sayHi ( name:String?) -> String{}

(1)返回为空,可不写返回,也可写返回  Void 或 ( )

(2)返回多个返回值,可返回一个元组

(3)传入、返回可以是可选型  (灵活应用 ?、!、??、nil)

2.参数
(1)外部参数名+内部参数名, #name 同时表示内外部参数名 
(2)有默认值的参数必有外参名(默认与内参名相同); 没有默认值的参数必须放在前面,按顺序传入
(3)可变参数类型  Int...    // 使用时args看做array
(4)参数默认是常量参数。变量参数,声明参数名前加var。
(5)传引用,声明参数时参数名前加inout,且调用传参数时参数前加&。(注意和c语言的区别)
3.函数看做变量,类型是( , )-> ( ),如 (Int,Int)-> Int     // 更好的实现逻辑
(1)把函数作为另一个函数的参数,如sorted函数。
(2)函数作为另一个函数的返回值。
(3)函数嵌套。  // 封装
 
VII.闭包      //类似python lambda
 1.基本
{ (parameters) -> returnType in
statements
}

2.简化

(1)类型推断

{a,b in return a>b}

(2)一句话可省略return

(3)省略参数名。  {$0> $1}

3.trailing closure

4.capture values

5.函数和闭包是引用类型。

func calcTotalmiles( todayMiles:Int )-> ()->Int  {
var totalMiles =
return { totalMiles += todayMiles; return totalMiles;}
} var dailyTwoMiles = calcTotalmiles()

VIII.枚举

enum Plant{
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}

1.已知类型,省略写法  .Earth

2.原始值

enum Planet: Int {
case Mercury = , Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}

Month(rawValue:12) 可选类型

 
 
 
 
 
 

swift基础教程笔记的更多相关文章

  1. jQuery官方基础教程笔记(转载)

    本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计 ...

  2. python基础教程笔记—即时标记(详解)

    最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...

  3. php基础教程笔记

    php的环境搭建很简单,从网上下载wamp service 2.5,官方网址http://www.wampserver.com/,有32位和64位的,必须下载跟系统一致的版本,不然会出现奇怪的错误,这 ...

  4. 阮一峰:jQuery官方基础教程笔记

    jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来 ...

  5. python基础教程笔记—画幅好画(详解)

    今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...

  6. Cytoscape基础教程笔记

    昨天开始学用Cytoscape,其tutorial分为两个部分,基础的和高级 的.基础教程又分成了四课:Getting Started.Filters & Editor.Fetching Ex ...

  7. iOS8使用Core Graphics实现渐变效果-Swift基础教程

    Core Graphics是一个强大的底层API,在这篇教程中我们主要使用Core Graphics来实现渐变效果,为了简单起见,我们采用线性渐变.线性渐变是从起点到终点颜色进行顺序渐变.教程在iOS ...

  8. 在UITouch事件中画圆圈-iOS8 Swift基础教程

    这篇教程主要内容展示如何利用Core Graphics Framework画圆圈,当用户点击屏幕时随机生成不同大小的圆,这篇教程在Xcode6和iOS8下编译通过. 打开Xcode,新建项目选择Sin ...

  9. Swift基础学习笔记 一

    之前学习过一段时间swift,由于目前开发的项目还是用的OC,一段时间不看swift又基本忘干净了,好记性不如烂笔头,还是用博客记录一下自己学的东西吧. 基本数据类型: 1.常量(let)和变量(va ...

随机推荐

  1. spingboot 邮件模板发送;

    <!-- 邮件start --><dependency> <groupId>javax.mail</groupId> <artifactId> ...

  2. dhcp 学习整理

    centos 6.5 rpm: dhcp-4.1.1-25.P1.el6.x86_64 dhcp-common-4.1.1-25.P1.el6.x86_64 服务: /etc/rc.d/init.d/ ...

  3. springBoot 数组增加工具类包

    1.pom中加入依赖 <!--数组工具类 start--> <dependency> <groupId>org.apache.commons</groupId ...

  4. Action 和 Func 的用法以及区别

    Action 无返回值 Func 有返回值,且最后一个参数为返回值 Action用法 public static void test(string s) { Console.WriteLine(&qu ...

  5. Cryptography I 学习笔记 --- 零碎

    1. KDF(密钥推导函数,key derivation function),根据用户输入的一个初始密钥来生成一系列的后续密钥.可以使用PRF来生成 2. 可以用salt与slow hash func ...

  6. Android下设置ListView数据加载完成后执行layoutanimation

    今天使用android的volley框架写了一个简单的网络天气获取的demo. 承载数据的空间是ListView 因为是网络加载,必然先要设置ListView的默认数据,我设置的就是那个Loading ...

  7. golang实现dns域名解析(二)

    上一节已经讲了如何构造dns请求包的情况,这一节接着上一节的情况,谈谈dns查询报文中的问题部分.问题部分中每个问题的格式如下: 查询名是要查找的名字,它是一个或者多个标识符的序列.每个标识符以首字母 ...

  8. TOYS-POJ2318

    本题主要是确定给定的点在那块区域.原题给出n条直线,将长方形分为n+1快区域.我们可以对每个给定的点来判断它在那块区域,判段方法可以根据点与直线的位置关系,具体如下,对于点(x0,y0)和直线ax+b ...

  9. 13.【nuxt起步】-部署到正式环境

    已经购买centos服务器,并安装了nodejs环境 Secure CRT链接 Cd / Cd /var/www Mkdir test.abc.cn 用ftp 除了node_modules,其他都上传 ...

  10. 线段树专题—ZOJ1610 Count the Colors

    题意:给一个n,代表n次操作,接下来每次操作表示把[l.r]区间的线段涂成k的颜色当中,l,r,k的范围都是0到8000 分析:事实上就是拿线段树维护一段区间的颜色,整体用到的是线段树的区间更新把,可 ...