標籤: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學習筆記(三)