swift基础语法(四) 函数、闭包(Closures)

//函数基本定义
func 函数名(参数名:参数类型=默认值)  ->返回值类型{代码块}
//无参无返回值函数
func hsmin(){
}
//单参无返回值函数
func prin(st:String){
    println(st)
}
prin("111")
//111
func yuanzu(tup:(String,Int)){
    print("Int:\(tup.1)  String:\(tup.0)")
}
yuanzu(("冯小刚",1))
//Int:1  String:冯小刚

//多参无返回值函数
func addp(a:Int,b:Int){
    println(\(a+b))
}
addp(1,2)
//3

//单参返回值函数
func prt(l:Int)->Int{
    return l+1
}
println("\(prt(2)")
//3
//多参返回值函数
func add(a: Int , b : Int) -> Int
{
    return a+b
}
func del(a : Int, b : Int) -> Int{
    return a-b
}
println(add(3,4))
//7
//参数默认值
func sum( a : Int, b : Int = 1) -> Int{
    return a+b
}
println(sum(3))
//4
//输出参数
func swapTwoInts(inout a: Int, inout b: Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
println("someInt is now \(someInt), and anotherInt is now \(anotherInt)")

//函数嵌套(匿名函数)
func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
    func stepForward(input: Int) -> Int { return input + 1 }
    func stepBackward(input: Int) -> Int { return input - 1 }
    return backwards ? stepBackward : stepForward
}
var currentValue = -4
let moveNearerToZero = chooseStepFunction(currentValue > 0)
// moveNearerToZero now refers to the nested stepForward() function
while currentValue != 0 {
    println("\(currentValue)... ")
    currentValue = moveNearerToZero(currentValue)
}
println("zero!")
// -4...
// -3...
// -2...
// -1...
// zero!

  个人感觉闭包(Closures)相当于c里面的block只不过在block的基础上重新改良了一下而已

// 闭包的完整写法
{ ( 参数列表 ) -> 返回类型 in 代码块 }
//eg
var a : Array = [3,1,4,2,5,7,6]
var b = sort( a, { (i1 : Int, i2 : Int) -> Bool in retern i1>i2 })
//b=[1,2,3,4,5,6,7]

//swift支持类型识别故简写为
var b = sort( a, {i1, i2 in retern i1>i2})
//b=[1,2,3,4,5,6,7]

//还可以使用参数识别$0,$1
var b = sort( a,{ $0 > $1})
//b=[1,2,3,4,5,6,7]

//无参无返回值闭包
func someFunctionThatTakesAClosure(closure: () -> ()) {
    代码块
}

someFunctionThatTakesAClosure({
    代码块
    })

someFunctionThatTakesAClosure() {
    代码块
}
时间: 2024-07-30 23:42:14

swift基础语法(四) 函数、闭包(Closures)的相关文章

swift基础语法三(函数与闭包)

1 // Playground - noun: a place where people can play 2 3 import Cocoa 4 //函数和闭包 5 6 //函数,使用func关键字声明函数: 7 func greet(name:String, day:String) -> String { 8 return "Hello \(name), today is \(day)." 9 } 10 greet("Bob", "Tuesday&

Swift语法基础入门三(函数, 闭包)

Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } 没有参数没有返回值 可以写为 ->Void 可以写为 ->() 可以省略 Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() func say() -> V

Swift中文教程(四)--函数与闭包

原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: 1 func greet(name: String, day: String) -> String { 2 return "Hello \(name), today is \(day)." 3 } 4 greet("Bob", "Tuesday")

Swift基础语法(常量变量、数据类型、元组、可选、断言等)

Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Array和Dictionary,请参考集合类型. 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值.在 Sw

Python 基础语法(四)

Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)-------------------------------------------- 十.Python标准库 Python标准库是随Pthon附带安装的,包含了大量极其有用的模块. 1. sys模块 sys模块包含系统对应的功能 sys.argv ---包含命令行参数,第一个参数是py的文件名 sys.platform ---返回平台类型 sy

Swift基础语法学习总结(转)

Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘

SQL基础语法和函数

SQL常用查询语句和函数 (2012-05-09 09:44:55) 转载▼ 标签: sql查询 函数 sql常用语句 it 分类: SQL SQL SELECT 语法 SELECT 列名称 FROM 表名称 SELECT LastName,FirstName FROM Persons --------------------------------------------------------------------------------- SQL SELECT DISTINCT 语句 在

Swift学习之十四:闭包(Closures)

* 闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. * 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas类似. * 闭包可以捕获和存储上下文中定义的的任何常量和变量的引用.这就是所谓的变量和变量的自封闭, * 因此命名为”闭包“("Closures)").Swift还会处理所有捕获的引用的内存管理. * * 全局函数和嵌套函数其实就是特殊的闭包. * 闭包的形式有: * (1)全局函数都是闭

Swift 基础语法

一.变量和常量 定义 let 定义常量,一经赋值不允许再修改 var 定义变量,赋值之后仍然可以修改 //: # 常量 //: 定义常量并且直接设置数值 let x = 20 //: 常量数值一经设置,不能修改,以下代码会报错 // x = 30 //: 使用 `: 类型`,仅仅只定义类型,而没有设置数值 let x1: Int //: 常量有一次设置数值的机会,以下代码没有问题,因为 x1 还没有被设置数值 x1 = 30 //: 一旦设置了数值之后,则不能再次修改,以下代码会报错,因为 x1

swift基础语法1.23

主要是swift的基础语法,其中print("其中为 输出内容"),但是加入你在其中加入一个反斜杠的话,那么就表示里面可以坐成一个表达式,例如如果a+B=5 ,print("\(a+B)是什么玩意")那么输出后的结果就是5是一个什么玩意.其次还有逻辑运算方向这个·就是·和C语言基本一样 先乘除,后加减·,然后最后做成逻辑运算.此外还有区间运算 例如这个利用了objectC的for in for(UIview *view in UIViewController)这个就