swift系统学习第二章

第五节:可选类型 optional

 1 //: Playground - noun: a place where people can play
 2
 3 import UIKit
 4
 5 /*
 6     Swift学习第五节
 7 可选类型 optional(可能是任何值)
 8
 9
10 */
11 let possibleNumber = "520"
12 var result = Int(possibleNumber)
13 print(result)
14 result.dynamicType
15 //上面就是一个可选类型的举例,possibleNumber开始是一个string,然后强转为Int,这里可能失败(可能转为Int,也可能是nil).
16
17 var x:Int?   //定义一个可选类型x,可能Int也可能其他.默认为nil
18 var address:String?
19 var successRate:Double?
20
21 result = nil //可以为一个可选类型赋值为nil,但是普通类型不可以
22
23 //访问可选类型
24 if result != nil{
25    print(result!)
26 }
27 //print(x!) error;可选类型不能直接输出,必须先行判断
28
29 if let num = result{
30   print(result)
31 }else{
32   print("num为nil")
33 

第六节:函数 函数参数

 1 //: Playground - noun: a place where people can play
 2
 3 import UIKit
 4 /*
 5 swift学习第六节
 6 函数  函数参数
 7 func 方法名(参数名:参数类型){
 8    方法体
 9 }
10 */
11 //写一个方法
12 func printName(){
13   print("my name is 少停")
14 }
15 printName()//调用
16
17
18 func ten(num:Int){
19   print("\(num * 10)")
20 }
21 ten(20)
22
23 func mult(num1:Int,num2:Int){
24   print("\(num1*num2)")
25 }
26 mult(20, num2: 10)  //num2  为外部参数名
27
28 func create(num3:Int,_ num4:Int){
29   print("\(num3*num4)")   // _ 使用_代替外部参数名简化
30 }
31 create(1, 2)
32
33 func make(NUM1 num1:Int,NUM2 num2:Int){
34   print("\(num1*num2)")
35 }                    //NUM1 NUM2 外部参数名,外部参数名只是方便理解
36 make(NUM1: 3, NUM2: 4)
37
38 func make1(NUM1 num1:Int = 11,NUM2 num2:Int = 11){   //为参数赋初始化
39    print("\(num1*num2)")
40 }
41 make1()
42
43 func arySum(number:Double ...){//参数为Double类型的number,可以有很多个
44     var sum: Double = 0
45     for i in number{
46        sum += i
47     }
48     print("\(sum)")
49 }
50 arySum(1,2,3,4,5)
51 arySum(1,2)
52
53 //func sum(value : Int){
54 //  value++
55 //}  error:swift中函数参数分为常量参数和变量参数,函数参数默认是常量参数,不能修改.
56
57 func sum(var value:Int){
58     value++;
59 }
60 var m = 10;
61 sum(m);
62 m
63 //在函数内对一个参数进行修改后,在函数外部仍然不会改变
64
65 func summ(inout value:Int){//想在函数内修改参数后,在外部仍然有效需要使用inout
66   value++
67 }
68 var n = 10
69 summ(&n)
70 n

第七节:函数 函数返回值和类型

 1 //: Playground - noun: a place where people can play
 2
 3 import UIKit
 4
 5 /*
 6 swift学习第七节
 7 函数 函数返回值和类型
 8
 9 */
10 func sum(num1:Int,num2:Int) -> Int{   //返回一个返回值
11     return num1*num2;
12 }
13 var m = sum(2, num2: 3)
14
15 func num(num1:Int,num2:Int) -> (Int,Int){   //返回两个返回值
16   return (num1,num2)
17 }
18 var table = num(25, num2: 52)
19 table.0
20 table.1
21
22 func  num2(num1:Int,num2:Int) -> (n1:Int,n2:Int){   //返回两个返回值,且为返回值赋名
23    return (num1,num2)
24 }
25 var nn = num2(9, num2: 1)
26 nn.n1
27 nn.n2
28
29 func string2Int(str:String) -> Int?{
30    return Int(str)
31 }
32 var n = string2Int("132")
33 n.dynamicType
34
35
36 var f1:(Int,Int) -> Int = sum
37 var f2:(Int,Int) -> (Int,Int) = num
38 var f3:String -> Int? = string2Int
39 //----------------------------------------------------------------
40 //把函数作为参数使用:execute为一个函数,这个函数有两个参数,一个参数是一个函数(参数为string,返回值是int),另外一个参数是string
41 func execute(fn:(String) -> Int?,fnParam:String){
42   fn(fnParam)
43 }
44 execute(f3, fnParam: "1000")
45
46 //----------------------------------------------------------------
47
48 //func increment(n:Int) -> Int{
49 //  return n+1
50 //}
51 //func decrement(n:Int) -> Int{
52 //  return n-1
53 //}
54 ////whichOne函数:有一个参数n,返回值是一个函数(参数是int,返回值也是int)
55 ////func whichOne(n:Bool) -> ((Int) -> Int){
56 ////    return n ? increment : decrement
57 ////}
58 //typealias op = (Int) -> Int
59 //func whichOne(n:Bool) -> op{
60 //   return n ? increment : decrement
61 //}
62 //var one = 1
63 //var one2Ten  = whichOne(one < 10)
64 //while one < 10 {
65 //   one = one2Ten(one)
66 //}
67 //上面的代码可以使用内嵌函数增强可读性
68 typealias op = (Int) -> Int
69 func whichOne(n:Bool) -> op{
70     func increment(n:Int) -> Int{
71         return n+1
72     }
73     func decrement(n:Int) -> Int{
74         return n-1
75     }
76
77     return n ? increment : decrement
78 }
79 var one = 1
80 var one2Ten  = whichOne(one < 10)
81 while one < 10 {
82     one = one2Ten(one)
83 }

第八节:Closures

 1 //: Playground - noun: a place where people can play
 2
 3 import UIKit
 4 /*
 5 swift学习第八节
 6 Closures
 7
 8
 9 */
10 let ten = 10
11 var addClosure: (Int,Int) -> Int = {(a:Int,b:Int) -> Int in
12    return a + b
13 }
14 addClosure(1,2)
15 addClosure = { a, b in return a + b}
16 addClosure = {a, b in a + b}    //Single expression closure
17 addClosure = {$0 + $1}

源码下载:http://download.csdn.net/detail/shaoting19910730/9463646

https://github.com/pheromone/swift2

时间: 2024-12-22 16:31:59

swift系统学习第二章的相关文章

java学习第二章总结

连续上了一个星期的课,也算慢慢适应了这种紧张的学习节奏.现在来总结下第二章所学的内容: 第二章主要是讲java的基础语法,他主要由这几个方面构成:常量,变量,数据类型,关键字,标识符,运算符,表达式,注释以及语句等构成. 数据类型是java控制内存的关键元素,java通过数据类型声明来对变量或者常量进行内存空间的分配,并将其标注好名称(即标识符).不同的数据类型,所分配的空间大小都不一样:整型中byte,short,int,long所对应的空间大小分别为1,2,4,8个字节:浮点型中float,

Java基础知识二次学习-- 第二章 基础语法与递归补充

第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下划线,$,数字组成,应该由字母,下划线$开头,同时应该避开java保留字符 变量是内存中的一小块区域,使用变量名来访问这块区域 执行过程中的内存管理(疑问:这里的内存和Jvm的一样吗?) code segment 存放代码 data segment 静态变量 字符串常量 stack 栈 局部变量 h

oracle学习 第二章 限制性查询和数据的排序 ——03

这里,我们接着上一小节2.6留下的问题:如果要查询的字符串中含有"_"或"%",又该怎样处理呢? 开始今天的学习. 2.7  如何使用转义(escape)操作符 可以是用个转义(escape)关键字来完成此任务.为了进行练习,我们必须先创建一个临时的表,之后再往该表中插入1行记录,其包含通配符.可能您现在还可能十分不理解例2-13和例2-14的SQL语句.没有问题,您只要照着输入就可以了. 例 2-13 SQL> CREATE TABLE dept_temp

linux基础学习 第二章-第四章笔记

第二章 ####linux系统结构#### linux系统结构是倒树形 /bin        ###二进制可执行文件也就是系统命令 /sbin       ###系统管理命令存放位置 /boot       ###启动分区,负责系统启动 /dev        ###设备管理文件 /etc        ###大多数系统管理文件 /home       ###普通用户的家目录 /lib        ###32位系统库文件存放位置 /lib64      ###64位系统库文件存放位置 /me

tornado的学习——第二章(模板与表单)

链接:http://demo.pythoner.com/itt2zh/ch2.html 来到了第二章:模板与表单 1 # -*- coding:utf-8 -*- 2 3 __author__ = 'roy' 4 5 import os.path 6 7 import tornado.httpserver 8 import tornado.ioloop 9 import tornado.options 10 import tornado.web 11 12 from tornado.option

Ruby学习-第二章

第二章 类继承,属性,类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name,description都被Treasure继承 2.以下三种方式传入父类initialize方法的参数分别是什么? # This passes a, b, c to the superclass def initialize( a, b, c, d, e, f ) super( a, b, c ) end # This passes a, b, c to the s

LinQ In Action 学习第二章

第二章主要复习.net 3.0 与Linq 有关的新知识 1.隐式类型: 必须初始化不能赋值null,只是由编译器推测其类型罢了 2. 对象初始化器,集合初始化器 1,2 很简单就不介绍了 3. lamdor 表达式 涉及到委托 需要好好研究一下 委托. 4. 扩展方法 5.匿名类型

LINUX学习第二章

过了10天时间,学习了Linux系统精讲课程,期间因为有其他学习上的事情需要处理,导致学习速度比较慢.接下来的学习时间需要加快速度,全身心地投入了. 2-0单用户模式 root密码重置 reboot----3秒内随便按一个健进入一个界面----选中第二行按下e ----进入另一个界面,在最后一行的最后加一个 1然后按回车----再按b----顺利进入1模式下 指令 runlevel 查看模式 指令 passwd 更改密码 设置新密码后reboot重启 2-1救援模式 另一种修改root密码的方式

Python 学习第二章

本章内容 数据类型 数据运算 表达式 if ...else 语句 表达式 for 循环 表达式 while 循环 一.数据类型 在内存中存储的数据可以有多种类型. 在 Python 有五个标准的数据类型 Numbers (数字) String (字符串) List (列表) Tuple (元组) Dictionnary (字典) 数字 Python 支持四种不同的数字类型 int (有符号整数) long (长整型) float (浮点型) complex (复数) 字符串 字符串或串(Stri