Swift學習—函數

來源:互聯網
上載者:User

標籤:

知識點:

  1. swift函數的不同點
  2. 無傳回值的函數的三種寫法
  3. 返回元組資料
  4. 外部參數名
  5. 外部參數名的簡寫
  6. 預設參數值,有預設參數值的時候,系統會自動的將參數名當成外部參數名。
  7. 在有預設的參數值的情況下,增加一個底線_,系統會忽略掉外部參數名
  8. 函數的形參預設是常量,想要在函數體的內部改變形參的值,將其設定成var即可
  9. 輸入輸出參數及其注意點
範例程式碼:

//: Playground - noun: a place where people can playimport UIKit// sum函數名,num1和num2參數名,箭頭後面的Int是傳回型別func sum(num1: Int, num2: Int) -> Int {    return num1 + num2}sum(1, 2)// 無傳回值的函數的三種寫法func noRe1() -> Void {}func noRe2() -> () {}func noRe3(){}// 返回元組資料func getPoint() -> (Int, Int) {    return (10, 10)}func getPerson(id: Int) -> (name: String, age: Int){    if id > 0 {        return ("jack", 20)    } else {        return ("nobody", 10)    }}var person = getPerson(10)println("name: \(person.name), age: \(person.age)")// 外部參數名,這裡分別為name,age,no設定了外部參數名,stu_name,stu_age,stu_no// 作用,方便閱讀func addStudent(stu_name name:String, stu_age age:Int, stu_no no:Int) {    println("name: \(name), age: \(age), no:\(no)")}addStudent(stu_name: "jack", stu_age: 10, stu_no: 20)// 外部參數名的簡寫,在內部形參名的前面加上#號,這樣內部形參名就也可以充當外部參數名func addStudent2(#name: String, #age: Int, #no: Int) {    println("name: \(name), age: \(age), no:\(no)")}addStudent2(name: "Tom", age: 20, no: 222)// 預設參數值// 這裡給age了一個預設值,所以調用的時候,不寫也行// 有預設參數的形參,系統會給其提供一個外部參數名,和內部形參參數名相同func addStudent3(#name: String, age: Int = 20) {    println("name: \(name), age: \(age)")}addStudent3(name: "Smith")addStudent3(name: "Hello", age: 10)// 在有預設參數名前增加一個底線_,系統會忽略掉外部參數名func addStudent4(name: String, _ age: Int = 20) {    println("name: \(name), age: \(age)")}addStudent4("A", 2)// 函數的形參預設是常量,如果想在函數的內部修改形參的值,將形參設定成var即可func addStr(var initStr: String, suffix: String, num: Int) -> String {    for _ in 0..<num {        initStr += suffix    }    return initStr}addStr("A", "B", 10)// 輸入輸出參數,類似於C中的根據地址改變函數中變數的值/*注意:1、不能傳入常量和字面量(比如10)數,因為他們都是不可更改的2、傳遞參數時候,必須在實參的前面加上&3、輸入輸出參數不能有預設值4、輸入輸出參數不能使可變參數5、輸入輸出參數不能再使用let、var修飾(inout和let、var不能共存)*/func change(inout num: Int) {    num = 10}var a = 20// 凡是輸入輸出參數,調用的時候前面都要增加&符號change(&a)println(a)// 如何在不使用第三個參數的情況下,交換兩個數func swap(inout a:Int, inout b:Int) {    a = a + b    b = a - b    a = a - b}// 演算法2func swap1(inout a:Int, inout b:Int) {//    異或運算的特點,相同的會抵消    a = a ^ b    b = a ^ b    a = a ^ b}var temp1 = 10var temp2 = 20swap(&temp1, &temp2)println("temp1 = \(temp1), temp2 = \(temp2)")var temp3 = 30var temp4 = 40swap1(&temp3, &temp4)println("temp1 = \(temp3), temp2 = \(temp4)")// 輸入輸出函數的使用價值// 舉例:不用傳回值也可以計算出和與差// 有傳回值寫法func sumAndMinus(num1: Int, num2: Int) -> (sum: Int, minus: Int) {    return (num1 + num2, num1 - num2)}var result = sumAndMinus(10, 20)result.sumresult.minus// 輸入輸出函數寫法func sumAndMinus2(num1: Int, num2: Int, inout sum:Int, inout minus:Int) {    sum = num1 + num2    minus = num1 - num2}var sum1 = 0var minus1 = 0sumAndMinus2(20, 10, &sum1, &minus1)sum1minus1




Swift學習—函數

相關文章

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.