博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A Swift Tour(3) - Functions and Closures
阅读量:4608 次
发布时间:2019-06-09

本文共 2083 字,大约阅读时间需要 6 分钟。

Functions and Closures

使用func来声明函数,通过括号参数列表的方式来调用函数,用 --> 来分割函数的返回类型,参数名和类型,例如:

func greet(name: String, day: String) -> String {        return "Hello \(name), today is \(day)."    }greet("Bob",  day: "Tuesday")  //这是swift文档中的调用方法,但是我在xcode6中编写的时候总报错,所以采用了下面的方式greet("Bob",  day: "Tuesday") //使用这种方式不会错误

使用一个元组一个函数可以返回多个值

func getGasPrices() -> (Double,Double,Double)    {        return (3.97,3.59,3.79)    }getGasPrices()

上面的方法我不知道用什么来接收返回的值,请高手支招

func 的参数也是可变的,可以把多个参数放在一个数组中

func sumOf(sumbers:Int...) -> Int    {        var sum = 0        for number in sumbers        {            sum += number        }        return sum    }println(sumOf())    //return 0println(sumOf(42, 597, 12))   //return 651

函数可以嵌套,嵌套的函数可以访问在外部函数中声明的变量,你可以使用嵌套函数来解决复杂的逻辑:

func returnFifteen() -> Int    {        var y = 10        func add()        {            y += 5        }        add()        return y;    }        println(returnFifteen()) //return 15

函数是一个 first-class 类型,这意味着函数的返回值可以是另一个函数:

func makeIncrementer() -> (Int -> Int) {        func addOne(number: Int) -> Int {            return 1 + number        }        return addOne    }var increment = makeIncrementer()increment(7)//上面的代码一直报错,不知道什么原因//错误:Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254//如果哪位高手知道,请指教

一个函数可以作为另一个函数作为其参数

func hasAnyMatches(list: Int[],condition: Int-> Bool) -> Bool    {        for item in list        {            if(condition(item))            {                return true            }        }        return false    }        func lessThanTen(number: Int) -> Bool    {        return number < 10;    }        var numbers = [20,19,7,12]        let temp = hasAnyMatches(numbers, lessThanTen)        println(temp)//这个和上面一样的错,也有事我的xcode6 有问题

你可以通过{}来些一个闭包

numbers.map({    (number: Int) -> Int in    let result = 3 * number    return result    })

这个闭包有的时候可以写的更加简洁,比如你知道他的返回类型或者其他的

numbers.map({ number in 3 * number })
sort([1, 5, 3, 12, 2]) { $0 > $1 }

上面的闭包 没搞明白。。。

 

转载于:https://www.cnblogs.com/mlgblog/p/swift_Function_Closures.html

你可能感兴趣的文章
windows 下配置Eclipse che
查看>>
SearchSploit
查看>>
关于C语言中的转义字符
查看>>
用正则表达式从网页里面提取视频地址
查看>>
JAVA线程优先级
查看>>
解决VC几个编译问题的方法——好用
查看>>
SPOJ #11 Factorial
查看>>
City Upgrades
查看>>
“人少也能办大事”---K2 BPM老客户交流会
查看>>
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>
CentOS开启samba实现文件共享
查看>>
MSSQL使用sqlbulkcopy批量插入数据
查看>>
证明一个数能被3整除,当且仅当它的各位数的和能被3整除
查看>>
2018秋寒假作业4—PTA编程总结1
查看>>
android自适应屏幕
查看>>
2019-北航面向对象-电梯作业总结
查看>>
SqlHelper
查看>>
初识算法、数据结构
查看>>
Luogu4069 SDOI2016 游戏 树链剖分、李超线段树
查看>>