ASwiftTour-FunctionsandClosures

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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=0fornumberinsumbers

{

sum+=number

}returnsum

}

println(sumOf())//return 0println(sumOf(42,597,12))//return 651

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

func returnFifteen() ->Int

{

var y=10func add()

{

y+=5}

add()returny;

}

println(returnFifteen())//return 15

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

func makeIncrementer() -> (Int ->Int) {

func addOne(number: Int)->Int {return1+number

}returnaddOne

}

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

{foriteminlist

{if(condition(item))

{returntrue}

}returnfalse}

func lessThanTen(number: Int)->Bool

{returnnumber <10;

}

var numbers= [20,19,7,12]

let temp=hasAnyMatches(numbers, lessThanTen)

println(temp)//这个和上面一样的错,也有事我的xcode6 有问题

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

numbers.map({

(number: Int)-> Intinlet result=3*numberreturnresult

})

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

numbers.map({ numberin3* number })

sort([1,5,3,12,2]) { $0> $1}

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航