swift系统学习第二章
第五节:可选类型 optional
//: Playground - noun: a place where people can play import UIKit /*
Swift学习第五节
可选类型 optional(可能是任何值) */
let possibleNumber = ""
var result = Int(possibleNumber)
print(result)
result.dynamicType
//上面就是一个可选类型的举例,possibleNumber开始是一个string,然后强转为Int,这里可能失败(可能转为Int,也可能是nil). var x:Int? //定义一个可选类型x,可能Int也可能其他.默认为nil
var address:String?
var successRate:Double? result = nil //可以为一个可选类型赋值为nil,但是普通类型不可以 //访问可选类型
if result != nil{
print(result!)
}
//print(x!) error;可选类型不能直接输出,必须先行判断 if let num = result{
print(result)
}else{
print("num为nil")
第六节:函数 函数参数
//: Playground - noun: a place where people can play import UIKit
/*
swift学习第六节
函数 函数参数
func 方法名(参数名:参数类型){
方法体
}
*/
//写一个方法
func printName(){
print("my name is 少停")
}
printName()//调用 func ten(num:Int){
print("\(num * 10)")
}
ten() func mult(num1:Int,num2:Int){
print("\(num1*num2)")
}
mult(, num2: ) //num2 为外部参数名 func create(num3:Int,_ num4:Int){
print("\(num3*num4)") // _ 使用_代替外部参数名简化
}
create(, ) func make(NUM1 num1:Int,NUM2 num2:Int){
print("\(num1*num2)")
} //NUM1 NUM2 外部参数名,外部参数名只是方便理解
make(NUM1: , NUM2: ) func make1(NUM1 num1:Int = ,NUM2 num2:Int = ){ //为参数赋初始化
print("\(num1*num2)")
}
make1() func arySum(number:Double ...){//参数为Double类型的number,可以有很多个
var sum: Double =
for i in number{
sum += i
}
print("\(sum)")
}
arySum(,,,,)
arySum(,) //func sum(value : Int){
// value++
//} error:swift中函数参数分为常量参数和变量参数,函数参数默认是常量参数,不能修改. func sum(var value:Int){
value++;
}
var m = ;
sum(m);
m
//在函数内对一个参数进行修改后,在函数外部仍然不会改变 func summ(inout value:Int){//想在函数内修改参数后,在外部仍然有效需要使用inout
value++
}
var n =
summ(&n)
n
第七节:函数 函数返回值和类型
//: Playground - noun: a place where people can play import UIKit /*
swift学习第七节
函数 函数返回值和类型 */
func sum(num1:Int,num2:Int) -> Int{ //返回一个返回值
return num1*num2;
}
var m = sum(, num2: ) func num(num1:Int,num2:Int) -> (Int,Int){ //返回两个返回值
return (num1,num2)
}
var table = num(, num2: )
table.
table. func num2(num1:Int,num2:Int) -> (n1:Int,n2:Int){ //返回两个返回值,且为返回值赋名
return (num1,num2)
}
var nn = num2(, num2: )
nn.n1
nn.n2 func string2Int(str:String) -> Int?{
return Int(str)
}
var n = string2Int("")
n.dynamicType var f1:(Int,Int) -> Int = sum
var f2:(Int,Int) -> (Int,Int) = num
var f3:String -> Int? = string2Int
//----------------------------------------------------------------
//把函数作为参数使用:execute为一个函数,这个函数有两个参数,一个参数是一个函数(参数为string,返回值是int),另外一个参数是string
func execute(fn:(String) -> Int?,fnParam:String){
fn(fnParam)
}
execute(f3, fnParam: "") //---------------------------------------------------------------- //func increment(n:Int) -> Int{
// return n+1
//}
//func decrement(n:Int) -> Int{
// return n-1
//}
////whichOne函数:有一个参数n,返回值是一个函数(参数是int,返回值也是int)
////func whichOne(n:Bool) -> ((Int) -> Int){
//// return n ? increment : decrement
////}
//typealias op = (Int) -> Int
//func whichOne(n:Bool) -> op{
// return n ? increment : decrement
//}
//var one = 1
//var one2Ten = whichOne(one < 10)
//while one < 10 {
// one = one2Ten(one)
//}
//上面的代码可以使用内嵌函数增强可读性
typealias op = (Int) -> Int
func whichOne(n:Bool) -> op{
func increment(n:Int) -> Int{
return n+
}
func decrement(n:Int) -> Int{
return n-
} return n ? increment : decrement
}
var one =
var one2Ten = whichOne(one < )
while one < {
one = one2Ten(one)
}
第八节:Closures
//: Playground - noun: a place where people can play import UIKit
/*
swift学习第八节
Closures */
let ten =
var addClosure: (Int,Int) -> Int = {(a:Int,b:Int) -> Int in
return a + b
}
addClosure(,)
addClosure = { a, b in return a + b}
addClosure = {a, b in a + b} //Single expression closure
addClosure = {$ + $}
源码下载:http://download.csdn.net/detail/shaoting19910730/9463646
https://github.com/pheromone/swift2
swift系统学习第二章的更多相关文章
- swift系统学习第一章
第一节:变量,常量,类型推断,字符,字符串 //swift学习第一节 /* 变量 常量 类型推断 字符 字符串 */ import UIKit //变量 var str = "swift&q ...
- oracle学习 第二章 限制性查询和数据的排序 ——03
这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7 怎样使用转义(escape)操作符 ...
- Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触
第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...
- Java基础知识二次学习-- 第二章 基础语法与递归补充
第二章 基础语法与递归补充 时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 第二章
Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...
- Ruby学习-第二章
第二章 类继承,属性,类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name,description都被Treasure继承 2.以下三种方 ...
- C#高级编程 (第六版) 学习 第二章:C#基础
第二章 基础 1,helloworld示例: helloworld.cs using System; using System.Collections.Generic; using System.Li ...
- swift系统学习第三章
第九节:结构体-sturt //: Playground - noun: a place where people can play import UIKit /* swift学习第九节 结构体:st ...
- Struts2框架学习第二章——Struts2下的HelloWorld
本章要点 — Struts 2的下载和安装 — 纯手工创建一个Web应用 — 纯手工创建一个Struts 2应用 — 实现Struts 2的Action — 配置Struts 2的Action — ...
随机推荐
- c/c++----网站及其后门(CGI应用程序)
C/C++学习到这儿,结合自己曾经学过的javasweb知识,现在让我们来看看,如何做一个CGI程序吧! 首先了解一下啥子叫CGI :CGI全称是“公共网关接口”(Common Gateway In ...
- javascript中IE与ff的区别
1.自定义属性问题:可以使用获取常规属性的方法来获取自定义属性,也可以使用getAtribute()获取自定义属性,ff下只能使用getAttribute()获取自定义属性. 2. 在IE中可以用ev ...
- BZOJ3206 [Apio2013]道路费用
首先我们强制要求几条待定价的边在MST中,建出MST 我们发现这个MST中原来的边是一定要被选上的,所以可以把点缩起来,搞成一棵只有$K$个点的树 然后$2^K$枚举每条边在不在最终的MST中,让在最 ...
- C#入门篇6-6:字符串操作 StringBiulder string char[]之间的转化
//StringBiulder string char[]之间的转化 public static void Fun3() { StringBuilder sb = new StringBuilder( ...
- Java: constructor 构造代码块
构造器与类同名 每个类可以有1一个以上的构造器 构造器可以有0个,1个或者多个参数 构造器没有返回值,不可以写return 构造器总是伴随着new操作一起调用 构造函数的作用:可以用于给对象进行初始化 ...
- C#中三种定时器对象的比较
·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.Windows.Forms里2.定义在System.Threading.Timer类里3.定义在System.Timers ...
- POJ 3009 Curling 2.0 回溯,dfs 难度:0
http://poj.org/problem?id=3009 如果目前起点紧挨着终点,可以直接向终点滚(终点不算障碍) #include <cstdio> #include <cst ...
- MainActivity获取fragment控件button监听报空指针错误
原因是是新版SDK创建项目时默认引入的fragment.xml,我的button是定义在fragment.xml里面的,而findviewbyid却是在main.activity里面调用的,而这样是获 ...
- 【转发】Linux系统下安装rz/sz命令及使用说明
对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令.今天,我们 ...
- 关于Mapper、Reducer的个人总结(转)
Mapper的处理过程: 1.1. InputFormat 产生 InputSplit,并且调用RecordReader将这些逻辑单元(InputSplit)转化为map task的输入.其中Inpu ...