iOS swift学习之入门详解(函数)
来源:互联网 发布:office办公软件绿色版 编辑:程序博客网 时间:2024/05/16 04:41
函数看一个函数的例子:func addNumbers( let a:Int,let b:Int)->Int{ return a+b;}实现两个数相加。函数必须以func开头,后面是函数名,小括号里是参数,箭头后面是返回类型。Swift中没有int之类的基本类型了,连表示数字都用类:Int。因为参数没有在函数内改变值,所以参数定义成常量。不论是类的方法或全局函数,语法一样。不像ObjC那样,全局函数是C语法,类方法是ObjC语法。这样调用它:let r = addNumbers(3, b: 4)11可以看到从第二个参数开始,需要带参数名。函数要通过return返回多个值在ObjC中是做不到的,当然你可以放到一个数组或字典中把这个数组或字典返回。返回后再取出来也比较麻烦。如果你写的函数是给别人用的话,还要注释说明白,里面的各项数据是如何排列的。但现在语法已经支持了:用元组!下面这个例子是取得两个数相除的商和余数:func divNumbers(a:Int,b:Int)->(shang:Int,yu:Int){ return (shang:a/b,yu:a%b)}箭头后是返回值类型,看起来像参数,实际上就是定一了一个元组类型。return时,定义了一个元组对象,填入了两个数据的值。调用此函数:let ret = divNumbers(7, b: 3)print(ret)print(ret.shang)可变参数函数也支持可变参数,以下是一个计算平均值的例子:func average(numbers:Int...)->Float{ var he=0 for num in numbers { he += num } return Float(he)/Float(numbers.count)}可以看到可变参数在函数内实际上是一个数组。嵌套定义函数还可以嵌套定义,就是在一个函数体内定义另一个函数,并且内部的函数可以随意使用所在函数的临时变量,反过来就不行。如:func test(){ var a=0; //定义内部函数 func add(){ a+=100 //直接操作外部变量 } //调用内部函数 add() print(a)}函数做返回值//返回值类型是一个函数,其参数是整型,返回是整型func testReturn()->((Int)->Int){ //定义要返回的函数 func action(a:Int)->Int{ return a*a } //返回这个函数对象 return action}let retFunc = testReturn()//定义返回的函数let bb = retFunc(22)这事并没有什么特殊的,在C语言时代就可以啊。函数做参数比如数组排序函数中,比较两个相邻元素的代码可以放到函数中,比较函数做为参数传入,例子://比较函数func compare(arr:[Int],firstIndex:Int,secondIndex:Int)->Bool{ if(arr[firstIndex]>arr[secondIndex]) { return true } return false}//冒泡排序func sort(var arr:[Int],compareFunc:([Int],Int,Int)->Bool){ //请大家自行写出冒泡排序代码。。。 for(var i=arr.count-1;i>0;i--){ for(var j=0;j<i;j++){ //这里是比较的代码 if(compareFunc(arr,j,j+1)){ let tmp = arr[j] arr[j]=arr[j+1] arr[j+1]=tmp } } }}var arr = [100,33,22,4353,67,6865,43,454]sort(arr,compareFunc: compare)闭包闭包跟嵌套函数实质没区别,可以直接用所在函数体的变量,唯一的差别就是名字。用闭包实现比较函数:sort(arr,compareFunc: { (arr:[Int],firstIndex:Int,secondIndex:Int)->Bool in if(arr[firstIndex]>arr[secondIndex]) { return true } return false})闭包的写法可以更简:sort(arr,compareFunc: { if($0[$1]>$0[$2]) { return true } return false})
0 0
- iOS swift学习之入门详解(函数)
- iOS swift学习之入门详解(swfit的介绍)
- iOS swift学习之入门详解(分支循环)
- iOS swift学习之入门详解(对象和类)
- iOS swift学习之入门详解(getter和setter)
- iOS swift学习之入门详解(枚举和结构)
- iOS swift学习之入门详解(协议和扩展)
- iOS swift学习之入门详解(可选类型错误处理)
- IOS Swift学习之函数
- iOS swift学习之入门详解(延迟调用与范型)
- iOS经典讲解之Swift函数详解(一)
- iOS巅峰之Swift 函数, 闭包详解(下)
- Swift学习之 -- 函数
- swift学习之函数
- swift学习之函数
- swift 学习之 函数
- swift教程【入门】 swift 函数之旅
- Swift快速入门之函数
- 检查一个算术表达式中的括号是否匹配
- 第10、11周-阅读程序(3)
- 局域网服务器的外网访问设置
- android KITKAT 以上实现沉浸式
- 本地缓存(快速加载)--menifest之应用
- iOS swift学习之入门详解(函数)
- bzoj4460
- 织梦模板安装后不能显示css的解决办法
- PullToRefresh原理解析
- 如何用PDF Transformer+来简化PDF处理过程
- SQL Server与SQL Server Express的区别
- 【教程】【多图详解】如何在Eclipse中离线安装ADT(Android Development Tools)
- 字符串转LinkList
- NoSQL basic knowledge