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. Android Studio 项目代码运行正常,但是代码爆红处理记录

    系统上运行Android项目时,编译正常但是代码爆红,很烦.处理方法记录: clean 项目,执行build. 运行invalidate cache / restart 重启项目. 找到项目.idea ...

  2. AC日记——琪露诺 洛谷 P1725

    琪露诺 思路: 单调队列+dp: 然而劳资不会单调队列,所以,线段树水过; 来,上代码: #include <cstdio> #include <cstring> #inclu ...

  3. asp.net core 开发环境自定义域名及端口

    web项目上右键-> 选择属性-> 选择调试->编辑“应用url” ,再用vs启动web项目即可实现自定义url. 值得注意的是如果报“visual studio无法连接到iis e ...

  4. BeanFactory和ApplicationContext的异同

    相同: Spring提供了两种不同的IOC 容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Java interface,ApplicationContex ...

  5. Ruby on rails初体验(二)

    体验一中添加了一个最基本的支架和一个简单的数据迁移,实现了一个基本的增删改查的功能列表.体验二中要在次功能上继续丰满一下功能.实现如下效果: 在每个公司中都包含有不同的部门,按照体验一中的方法,添加一 ...

  6. delphi 按位运算 not and or xor shl shr

    delphi 按位运算 not and or xor shl shr unit Unit1;   interface   uses   Windows, Messages, SysUtils, Var ...

  7. C# 导出 数据 到Excel

    /// <summary> /// 实现将数据导出至Excel, /// 在上面的代码中,我们首先将gridview绑定到指定的数据源中,然后在button1的按钮(用来做导出到EXCEL ...

  8. java项目热加载工具jrebel

    flask有热加载的功能,修为代码后,自动生效. java项目也有类似的功能,不过需要使用收费的插件jrebel 提供一个免费的注册服务器:http://139.199.89.239:1008/884 ...

  9. 工程管理,用网页就够了!——Wish3D Earth在线三维地球强势上线

    大型工程涉及到众多的施工队.管理单位和相关部门,相互之间需要传递的数据.文件的数量是惊人的,必须建立起有效的信息管理方法,使管理者及时把握工程的信息,全面准确地控制工程施工情况. 现代化的建筑工程管理 ...

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

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