swift 2.x學習筆記(三)

來源:互聯網
上載者:User

標籤:int   test   sorted   元組   turn   語句   通過   方法   函數返回   

//: Playground - noun: a place where people can play

 

import UIKit

 

var str = "Hello, playground"

 

func greet(name: String, day: String) ->String {

    return "Hello \(name), today is \(day).";

}

greet("Bob", day: "Tuesday");

 

func eat (name : String, food : String) ->String {

    return "Hi, \(name),let eat \(food) for lunch";

}

eat("wjw", food: "beef");

 

//使用元組,讓一個函數返回多個值

func caculateStatistics(scores:[Int]) ->(min: Int, max: Int, sum: Int) {

    var min = scores[0];

    var max = scores[0];

    var sum = 0;

    

    for score in scores {

        if score > max {

            max = score;

        } else if score < min {

            min = score;

        }

        sum += score;

    }

    return (min, max, sum);

}

 

let statistics = caculateStatistics([5, 3, 100, 3, 9])

print(statistics.sum);

print(statistics.2);

 

//函數可以帶有可變個數的參數, 這些參數在函數內表現為數組的形式

func sumOf(numbers : Int...) -> Int {

    var sum = 0;

    for number in numbers {

        sum += number;

    }

    return sum;

}

sumOf();

sumOf(42, 597, 12);

 

func averageOf(numbers : Int...) -> Int {

    var aver = 0;

    var count = 0;

    var sum = 0;

    for number in numbers {

        sum += number;

        count++;

    }

     aver = sum/count;

    return aver;

}

averageOf(32, 54);

 

//函數可以嵌套,被嵌套的函數可以訪問外側函數的變數,你可以使用嵌套函數來重構一個太長或者太複雜的函數

func returnFifteen() ->Int {

    var y = 10;

    func add() {

        y += 5;

    }

    add();

    return y;

}

returnFifteen();

 

//函數是第一等類型,這意味著函數可以作為另一個函數的傳回值

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

    func addOne(number : Int) ->Int {

        return 1 + number;

    }

    return addOne

}

var increment = makeIncrementer();

increment(7);

 

//函數也可以當做參數傳給另一個函數

func hasAnyMatches(list : [Int], conditon : Int -> Bool) -> Bool {

    for item in list {

        if conditon(item){

            return true;

        }

    }

    return false;

}

func lessThanTen(number : Int) -> Bool {

    return number < 10;

}

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

hasAnyMatches(numbers, conditon: lessThanTen);

 

 

//函數實際上是一種特殊的閉包,它是一段能之後被調取的代碼。閉包中的代碼能訪問閉包所建立範圍中能得到的變數和函數,即使閉包是在一個不同的範圍執行的,你已經在嵌套函數例子中所看到。你可以使用{}來建立一個匿名函數。使用 in 將參數和傳回值型別宣告與閉包函數體進行分離

numbers.map({

    (number: Int) -> Int in

    let result = 3*number;

    return result;

})

//重寫閉包,對所有奇數返回0;

numbers.map({

    (number : Int) -> Bool in

    let result = Bool(number/2 - 1);

    return result;

})

//有很多種建立更簡潔的閉包的方法。如果一個閉包的類型已知,比如作為一個回呼函數,你可以省略參數的類型和傳回值。單個語句閉包會把它語句的值當做結果返回

let mappedNumbers = numbers.map({

    number in 3 * number

})

print(mappedNumbers);

 

//你可以通過參數位置而不是參數名字來引用參數--這個方法在非常短的閉包中非常有用。當一個閉包作為最後一個參數傳給一個函數的時候,它可以直接跟在括弧後面。當一個閉包是傳遞個函數的唯一參數,你可以完全忽略括弧。

let sortedNumbers = numbers.sort{ $0 > $1}

print(sortedNumbers);

swift 2.x學習筆記(三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.