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 — ...
随机推荐
- java下载网络图片
import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IO ...
- python与字符集编码
讲的比较明白的博客:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 以上面博文的汉为例子,汉字的GBK编码是baba, UNIC ...
- EFCode First 导航属性
首先谈谈自己对EF的接触的过程吧,最先接触EF只是因为EF支持从数据库把关系扒下来,可以省掉自己写Select.Update.Insert这些SQL语句,而且修改非常方便,后来在使用的过程中发现导航属 ...
- Java 生成压缩包,ZipOutputStream的使用
案例:根据url 获取网络资源A,B,C 将资源A,B,C放在一起生成一个xxx.zip 直接看代码 import java.io.File; import java.io.FileOutputS ...
- 常用三方,Reachability 检测网络连接
常用三方 Reachability 检 测网络连接 用来检查网络连接是否可用:包括WIFI和 WWAN(3G/EDGE/CDMA等)两种工作模式. 可以从Apple网站下载到: http://deve ...
- java程序(一)----HashMap同时获取键值
快速会用: HashMap<Integer,String> maps=new HashMap<Integer,String>(); maps.put(1,"xiaom ...
- superobject中 JavaToDelphiDateTime的使用
procedure TForm1.FormCreate(Sender: TObject); var n: TDateTime; i64: Int64; s: Integer; begin Memo1. ...
- Android调用Sqlite数据库时自动生成db-journal文件的原因
数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便 ...
- Cisco IOS debug command reference Command A through D
debug aaa accounting through debug auto-config debug aaa accounting : to display information on acco ...
- Memcache 详解
这里收集了经常被问到的关于memcached的问题 一般的问题 什么是memcached? 从哪获得memcached? 怎么安装memcached? 哪些平台可以运行memcached? 什么情况下 ...