• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASwiftTour(3)-FunctionsandClosures

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 0
println(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 }

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap