Swift 系統學習 12 可變長引數函式

2021-07-27 16:16:29 字數 3055 閱讀 1207

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

import uikit

/* * 本節主要內容:

* 1.可變長引數

* 2.函式形參的性質(**)

* 3.函式型別function type(***)

* 4.函式型別作為其他函式引數

* 5.函式型別作為其他函式的返回值

*/print("hello", "world", 18, true)

print("hello", "world", 18, true, separator: "**", terminator: "!")

// 如何宣告可變長引數的函式? 驗證

// 語法: 引數型別後面新增...

// 備註: 可變長引數只能是乙個

func sayhello(_ names: string..., greetings: string)

}//sayhello("kara", "kimi", greetings: "hello")

/* * 1.值傳遞: 預設函式的形參是不可變的(常量)

* 3.如果是引進傳遞, 呼叫函式, 在引數前面加上取位址符號&

*/var numberone = 10

var numbertwo = 100

// swap交換兩個數

swap(&numberone, &numbertwo)

numberone

numbertwo

// 模擬swap函式, 實現兩個數的交換

func reverse(first: inout string, second: inout string)

var onestring = "hello"

var twostring = "world"

reverse(first: &onestring, second: &twostring)

onestring

twostring

// 函式型別: 每個函式都有乙個特定的函式型別, 由函式的引數型別和返回型別組成

func addtwoints(_ first: int, _ second: int) -> int

func multipytwoints(_ first: int, _ second: int) -> int

// (int, int) -> int

var firstfunctiontype = addtwoints

// (int, int) -> int

var secondfunctiontype = multipytwoints

// 上述兩個變數的型別相同, 稱為"函式型別的變數"

// 呼叫函式, 可以通過變數

firstfunctiontype(10, 20)

// 顯示宣告函式型別的變數

var thirdfunctiontype: (int, int) -> int = addtwoints

// 下面幾種方式等價:

// 沒有引數,沒有返回值的函式型別的變數

var forthfunctype: () -> ()

var fifthfunctype: () -> void

var sixthfunctype: (void) -> ()

var seventhfunctype: (void) -> void

// 函式型別作為其他函式的引數

var array: [int] =

for _ in 0..<10

array.sort()

/* * 需求: 其他的多種排序方式如何實現?

* 1.倒序方式排序

* 2.按照字串的排序方式

* 3.離15進的, 排在前面

*/// array.sort(by: <#t##(int, int) -> bool#>)

// 排序演算法(函式型別)只能是: (int, int) -> bool

func getbiggernumber(_ first: int, _ second: int) -> bool

array.sorted(by: getbiggernumber)

func comparestring(_ first: int, _ second: int) -> bool

array.sorted(by: comparestring)

func nearsomenumber(_ first: int, _ second: int) -> bool

array.sorted(by: nearsomenumber)

// 理解: 函式型別作為其他函式的引數

// 宣告兩個函式: 計算步長

func stepforword(_ input: int) -> int

func stepbackword(_ input: int) -> int

// 宣告函式, 引數bool, 返回是函式型別(引數型別+返回型別)

func choosestepfunction(backward: bool) -> ((int) -> int)

var currentvalue = 5

// funtiontype: (int) -> int

var funtiontype = choosestepfunction(backward: currentvalue > 0)

// 執行functiontype函式型別

while currentvalue != 0

/* * 課堂練習一: 宣告變長引數(型別: double)函式, 計算並返回傳入的引數的平均值.

*//*

* 課堂練習二: 給定整型型別int的數值, 返回該整型值的二進位制字串string

*//*

* 課堂練習三: 給定整型陣列(全班同學的分數), 將陣列中的資料, 按照如下的三種方式進行修改(該分數)

* 1.方式一: 對每個分數開平方*10

* 2.方式二: 對每個分數/150*100

* 3.方式三: 對每個分數+5

*/

Swift 系統學習 06 迴圈語句

playground noun a place where people can play import uikit 本節主要內容 1.迴圈語句 for index in 0.10 需求 計算2的10次方 var result 1 var basevalue 2 下劃線 是忽略迴圈次數 忽略區間運算...

swift4 1 系統學習一

swift學習筆記1 簡介swift出現的目的 為了簡化macos和ios開發 特點 1.開源 2.跨平台 3.物件導向的程式語言 4.程式設計正規化豐富 面向過程,物件導向,函式式程式設計 5.安全性 swift學習筆記2 基本型別體系 1.列舉 enum 2.結構體 struct 3.類 cla...

swift4 1 系統學習九 Optional

main.swift swift09 created by ios on 2018 9 29.import foundation swift學習筆記9 optional 可選型別 可選型別是swift特色之一,也是很多初學者不適應的原因之一。optional體現了swift對型別的安全性考慮。特點 ...