swift基础教程笔记

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

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

I.

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

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

var t=(x:1,y:2,z:"hi")  // var t : (Int,Int,String)
var (a,_,_)=t    // _ 匿名
print(t.0)    // 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==1{
              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 =0
    return { totalMiles += todayMiles;    return totalMiles;}
}

var dailyTwoMiles = calcTotalmiles(2)

VIII.枚举

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

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

2.原始值

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

Month(rawValue:12) 可选类型

时间: 2024-07-29 19:20:19

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

从Pitre《Swift 基础教程2nd》开始

看了两天<Learn Objective-C on the MAC> 中文版本<Objective-C基础编程>,大概认真读到了第9章内存管理部分,感觉这语言可比C++简单多了. 第一天,因为有C语言基础的缘故,我在windows 上安装了GNUstep (Objective-C)开发环境,变看电子书籍,边在PC上编译运行树上的示例,几乎一个都没放过,还做了不少笔记. (毕竟作者 Mark Dalrymaple & Scott Knaster 是高屋建瓴,叙述技术娓娓道来,

imooc’s html 基础教程笔记

imooc’s html 基础教程笔记 imooc’s html 基础教程 第一章 Html介绍 1.1 Html和CSS的关系 1.2认识html标签 1.3 标签的语法 1.4 认识html文件基本结构 1.5 认识head标签 1.6了解HTML的代码注释 2.1语义化,让你的网页更好的被搜索引擎理解 2.2 标签,网页上显示的内容放在这里 2.3 开始学习标签,添加段落 2.4 了解标签,为你的网页添加标题 2.5 加入强调语气,使用strong和em标签 2.6 使用span标签为文字

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

本文转载于阮一峰的博文,内容基础,结构清晰,是jquery入门不可多得的资料,非常好,赞一个. 阮一峰:jQuery官方基础教程笔记 jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果. 虽然jQuery上手简单,比其他

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

jQuery是目前使用最广泛的javascript函数库. 据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果. 虽然jQuery上手简单,比其他库容易学会,但是要全面掌握,却不轻松.因为它涉及到网页开发的方方面面,提供的各种方法和内部变化有上千种之多.初学者常常感到,入门很方便

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

今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个txt文件,然后打开处理一下得到数据,因为我从这个url路径没有获取到数据,所以直接写了一点数据在程序里. urlopen比较简单,以后写爬虫也会经常用到,所以这里就不讲了,只单独讲讲reportlab模块. #encoding:utf8 from reportlab.graphics.shapes

Swift基础教程(极客学院)笔记

http://www.swiftv.cn/course/hw4sysi7 本课程很短,加起来一个小时,适合作为一个快速了解. 0.环境 Xcode-workspace-project-command line OS X application 1.变量类型 var 变量  let 常量  println( ) 输出 无需分号(C-like)和缩进(python-like)但分行 手动指明类型  var x: Int = 3    注意=两侧要有空格 (1)字符串连接  str=str+“\(i)

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

这篇教程主要内容展示如何利用Core Graphics Framework画圆圈,当用户点击屏幕时随机生成不同大小的圆,这篇教程在Xcode6和iOS8下编译通过. 打开Xcode,新建项目选择Single View Application,Product Name填写iOS8SwiftDrawingCirclesTutorial,Organization Name和Organization Identifier根据自己填写,选择Swift语言与iPhone设备. File->New File-

《Swift 基础教程2nd》循环和控制结构

流程控制 1  在特定的范围内计数循环,结构为 for loopVar in startNumber...endNumber 关键字in 的后面依次为起始数字,三个句点和结束数字,示例: var loopCount :Int=0 for loopCount in 1...10 { print ("#\(loopCount)") } 2 变种语法 for loopCount in 1..<10 { //print } 3 老式for循环 for loopCount=0;loopCo

Swift基础教程(swift代码创建第一个控件之UILabel)

首先 给需要创建的label 设置frame let textLabel = UILabel(frame:CGRectMake(self.view.frame.size.width/8,20,self.view.frame.size.width*3/4,100)) 给label 设值 textLabel.text = "现在我们来开始学习如何创建我们的第一个swift控件吧 -UILabel" 设置是否默认换行 textLabel.numberOfLines = 0 设置label的背