//: 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對型別的安全性考慮。特點 ...