swift基础语法(四) 函数、闭包(Closures)
//函数基本定义
func 函数名(参数名:参数类型=默认值) ->返回值类型{代码块}
//无参无返回值函数
func hsmin(){
}
//单参无返回值函数
func prin(st:String){
println(st)
}
prin("")
//
func yuanzu(tup:(String,Int)){
print("Int:\(tup.1) String:\(tup.0)")
}
yuanzu(("冯小刚",))
//Int:1 String:冯小刚 //多参无返回值函数
func addp(a:Int,b:Int){
println(\(a+b))
}
addp(,)
//3 //单参返回值函数
func prt(l:Int)->Int{
return l+
}
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(,))
//7
//参数默认值
func sum( a : Int, b : Int = ) -> Int{
return a+b
}
println(sum())
//4
//输出参数
func swapTwoInts(inout a: Int, inout b: Int) {
let temporaryA = a
a = b
b = temporaryA
}
var someInt =
var anotherInt =
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 + }
func stepBackward(input: Int) -> Int { return input - }
return backwards ? stepBackward : stepForward
}
var currentValue = -
let moveNearerToZero = chooseStepFunction(currentValue > )
// moveNearerToZero now refers to the nested stepForward() function
while currentValue != {
println("\(currentValue)... ")
currentValue = moveNearerToZero(currentValue)
}
println("zero!")
// -4...
// -3...
// -2...
// -1...
// zero!
个人感觉闭包(Closures)相当于c里面的block只不过在block的基础上重新改良了一下而已
// 闭包的完整写法
{ ( 参数列表 ) -> 返回类型 in 代码块 }
//eg
var a : Array = [,,,,,,]
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,{ $ > $})
//b=[1,2,3,4,5,6,7] //无参无返回值闭包
func someFunctionThatTakesAClosure(closure: () -> ()) {
代码块
} someFunctionThatTakesAClosure({
代码块
}) someFunctionThatTakesAClosure() {
代码块
}
swift基础语法(四) 函数、闭包(Closures)的更多相关文章
- Swift语法基础入门三(函数, 闭包)
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...
- Swift中文教程(四)--函数与闭包
原文:Swift中文教程(四)--函数与闭包 Function 函数 Swift使用func关键字来声明变量,函数通过函数名加小括号内的参数列表来调用.使用->来区分参数名和返回值的类型: fu ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
- Swift基础语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...
- Python 基础语法(四)
Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...
- python学习第五讲,python基础语法之函数语法,与Import导入模块.
目录 python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 1.函数语法定义 2.函数的调用 3.函数的文档注释 4.函数的参数 5.函数的形参跟实参 6.函 ...
- openresty开发系列14--lua基础语法3函数
openresty开发系列14--lua基础语法3函数 一)function (函数) 有名函数: optional_function_scope function function_name( ar ...
- JAVA基础语法:函数(方法)、类和对象(转载)
4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...
- Swift学习之十四:闭包(Closures)
* 闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. * 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas ...
- Swift基础语法
简介 特点 (1)优于OC,快速,安全 (2)取消了预编译指令包括宏定义(OC用的太多了) (3)取消了OC指针和不安全访问的使用(看不到星星了) (4)舍弃 Objective-C 早期应用 Sma ...
随机推荐
- AIDL和生成的java文件要分开存放,否则生成can't find symbol class
Android 5.0之后需要AIDL和生成的java文件要分开存放,否则生成can't fin symbol class.但是4.3没有这个限制.被这个弄了一天,跟老大讨论了一下才豁然开朗.
- IOS系列swift语言之课时三
今天需要掌握的内容就是:闭包.类.结构体.属性(计算属性和延迟属性) 同样里面有一些题目,有兴趣的可以做一下. 首先我们需要知道什么是闭包?所谓的闭包就是一个代码块(一般是指函数以及被它捕获的成员变量 ...
- SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中
最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...
- c++接口实现与分离(转载)
原文地址:http://www.360doc.com/content/13/0218/10/8363527_266294787.shtml 良好的设计应该只暴露接口给用户,所有的实现细节对用户来说应该 ...
- 使用date类和format类对系统当前时间进行格式化显示
一:Date------------String 代码1:(代码二对显示出来的时间格式进行优化) package DateDemo; import java.text.SimpleDateFormat ...
- JS之BOM、客户端检测和DOM
这是第八章到第十二章的内容,粗略浏览过一遍. 一.BOM 浏览器对象模型.包括了window.location.navigator.screen和history对象. window:核心对象 1.JS ...
- UIView中间透明周围半透明(四种方法)
方法一 #import "DrawView.h" @implementation DrawView - (instancetype)initWithFrame:(CGRect)fr ...
- 2-5. Working with Compile Time Constants
#include <array> #include <cstdint> #include <iostream> class MyClass { private: u ...
- MVC 之 Code First
在我们的工作和学习当中,经常会遇到中小型项目,这些项目除了业务上的区别较大 外,对于底层和数据访问,其实都差不多.记得以前做项目时,每次都要重复的写底层操作数据库的代码,不仅浪费时间,也无太大意思,后 ...
- ReportViewer 不预览,直接导出 PDF文件
作为笔记记着,以免以后再到处找资料 1. 在不预览的情况下导出文件 先看一个方法说明,想知道ReportViewer支持导出哪些文件类型,在Render方法说明中就有描述 // // Summary: ...