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. python commands 模块

    commands 模块 通过python调用系统命令 只适用于linux commands是提供linux系统环境下支持使用shell命令的一个模块 commands.getoutput(cmd) 只 ...

  2. Centos python 2.6 升级到 2.7

    前几天做了下阿里云的RDS日志相关功能,其工具大都是Python语言编写,但服务器初始化时的Python版本又不满足需求,本身也没有学过Python,因此在问题定位上费了一番周折,最后找朋友帮忙看了下 ...

  3. Find Median from Data Stream - LeetCode

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  4. 寒假week1---二分查找(二分枚举)

    寒假week1---二分查找(二分枚举)1.适用条件:要查找(枚举)的集合有序 && 查找(枚举)的“条件”具有单调性2.什么是“条件”:example: 1.给定一个有序数组,从中查 ...

  5. iOS 5的文件存储策略应对

    苹果在iOS 5系统时,对app的文件存储提出了新的要求.从它的guildline来看,是推荐开发者尽量把app生成的文件放在Caches目录下的.原文如下: Only user-generated ...

  6. Android与javaScript的交互

    WebView与js的交互包含两方面,一是在html中通过js调用java代码:二是在安卓java代码中调用js. 一.html中通过js调用java代码 js中调用java代码其实就记住一点,Web ...

  7. 各种优化方法总结比較(sgd/momentum/Nesterov/adagrad/adadelta)

    前言 这里讨论的优化问题指的是,给定目标函数f(x),我们须要找到一组參数x.使得f(x)的值最小. 本文下面内容如果读者已经了解机器学习基本知识,和梯度下降的原理. SGD SGD指stochast ...

  8. 【DQ冰淇淋】—— Babylon 冰淇淋三维互动营销项目总结

    前言:在学习过Babylon.js基础之后,我上手的第一个网页端3D效果制作项目就是‘DQ冰淇淋’.这个小项目应用到了Babylon最基础的知识,既可以选味道,选点心,也可以旋转.倒置冰淇淋,互动起来 ...

  9. Solidworks如何开启自动求解

    1 我打开了一个DWG格式的文件,提示草图太大,关闭的自动求解(就是没法撤销了)   2 工具-草图设定-自动求解   3 随便做一个标注,然后发现撤销按钮可以使用了,点击之后也的确可以撤销刚才的操作 ...

  10. CSRF Token

    本文参考自:https://blog.csdn.net/lion19930924/article/details/50955000 目的是防御CSRF攻击. Token就是令牌,最大的特点就是随机性, ...