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 — ...
随机推荐
- (11)lambda表达式用法
* lambda 简述 lambda只是一个表达式,函数体比def简单很多 lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lam ...
- JavaScript基础知识(1)
表单的确认 : 客户端确认 --减少服务器负载 --缩短用户等待时间 --兼容性难 服务器端确认: ----统一确认 ----兼容性强 ----服务器负载重 JavaScript基本的写法: ...
- swfobject2.2
官方网址:http://blog.deconcept.com/swfobject/ Github地址:https://github.com/swfobject/swfobject 谷歌地址 貌似被和谐 ...
- WebForm MapPageRoute 路由配置(转载)
使用场景是:MVC 混合使用 WebForm,然后对 WebForm 进行路由配置 http://www.cnblogs.com/xishuai/archive/2015/02/26/web-form ...
- Excel中连接函数CONCATENATE()
直接API: CONCATENATE 函数语法具有下列参数 (参数:为操作.事件.方法.属性.函数或过程提供信息的值.): Text1 必需. 要连接的第一个文本项. Text2, ... 可选. 其 ...
- Axis2 webservice 之使用java调用webservice
在上一篇中写了一个简单了webservice,实现了一个sayHello功能.那么webservice写好之后我们如何使用Java程序来调用webservice呢? 一.java调用的webservi ...
- 使用js给页面显示的图片添加水印效果
功能描述:使用Jquery 给页面的图片添加 版权信息水印. 这里的水印并不是真的把每一张图片上都添加了水印.而是在图片的上方添加了一个层,层中包含了水印图片效果就像是图片上加了水印. 功能原理:1, ...
- sed 替换
sed -i 's/i=0/i=2/g' test2.sh -i 在当前文档替换 g 替换所有文档 sed -i '3s/cccc/ccccc/' a.txt 将第三行的 cccc 替换成 ccccc ...
- MyEclipse 修改代码不生效
最近得了一个项目,java开发的web项目,修改代码时,无论怎么改,都不生效: 各种度娘,没用. 原因是没有建立发布设定 这个东西我开始不理解它的作用,现在知道了: mysqleclipse项目在一个 ...
- 在phpmyadmin中执行sql语句出现的错误:Unknown storage engine 'InnoDB'
在phpmyadmin中执行sql语句出现的错误:Unknown storage engine 'InnoDB' 解决方法:解决方法: 1.关闭MySQL数据库 2 ...