您好,登錄后才能下訂單哦!
第一:函數類型:
/*
函數類型:
類似于C語言的指向函數的指針
類似于OC語言的block
函數類型是由函數的參數類型和返回值類型組成的
*/
// 這兩個函數的類型是 (Int, Int) -> Int
func sum(a: Int, b: Int) ->Int
{
return a + b;
}
func sub(a: Int, b: Int) ->Int
{
return a - b;
}
// 可以利用函數類型定義函數變量和常量
var funcP:(Int, Int) -> Int = sum
funcP = sub
print(funcP(10, 20))
// 函數類型可以作為函數的參數
func calFunc(a: Int, b: Int ,Option:(Int, Int) -> Int) ->Int
{
return Option(a, b)
}
print(calFunc(10, b: 20, Option: sum))
print(calFunc(10, b: 20, Option: sub))
// 函數類型可以作為函數返回值
func max(a: Int, b: Int) -> Int
{
return a > b ? a : b
}
func min(a: Int, b: Int) -> Int
{
return a < b ? a : b
}
func chooseFunc(getMax:Bool) -> (Int , Int) -> Int
{
return getMax ? max : min
}
var funcP2:(Int , Int) -> Int = chooseFunc(false)
print(funcP2(10, 20))
第二 . 函數: 完成某個特定任務的代碼塊, 給代碼起一個合適的名稱稱之為函數名稱. 以后需要執行代碼塊只需要利用函數名稱調用即可, 好比每個人都有一個名字, 叫名字就能找到對應的人
格式:
func 函數名稱(參數名:參數類型, 參數名:參數類型...) -> 函數返回值 {函數實現部分}
// 1.沒有參數沒有返回值
func about() -> Void {
print("iPhone7s Plus")
}
// 沒有返回值的簡單寫法
func about1() {
print("iPhone7s")
}
about()
let view : UIView
// 2.有參數沒有返回值
func callPhone(phoneNum : String) {
print("打電話給\(phoneNum)")
}
callPhone("+86 110")
// 3.沒有參數有返回值
func readMessage() -> String {
return "吃飯了嗎?"
}
print(readMessage())
// 4.有參數有返回值
func sum(num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
sum(20, num2: 30)
/*
嵌套函數
*/
func showArray(array:[Int])
{
for number in array
{
print("\(number), ")
}
}
var number = 998;
func bubbleSort(inout array:[Int])
{
print(number)
func swap(inout a:Int, inout b:Int)
{
print(number)
let temp = a
a = b
b = temp
}
let count = array.count;
for var i = 1; i < count; i++
{
for var j = 0; j < (count - i); j++
{
if array[j] > array[j + 1]
{
swap(&array[j], b: &array[j + 1])
// let temp = array[j]
// array[j] = array[j + 1]
// array[j + 1] = temp
}
}
}
}
var arr:Array<Int> = [31, 13, 52, 84, 5]
bubbleSort(&arr)
showArray(arr)
// 1.內部參數和外部參數
// 內部參數:在函數內部可以看到的參數名稱,稱之為內部參數
// 外部參數:在函數調用時,可以看到的參數,成之為外部參數
// 默認情況下從第二個參數開始,既是內部參數也是外部參數
// 如果希望將第一個參數也聲明稱外部參數,只需要在標識符前加上外部參數的名稱即可
func sum(num1 num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
// 函數的重載:函數名稱相同,參數不同(1.參數的類型不同 2.參數的個數不同)
func sum(num1 : Int, num2 : Int, num3 : Int) -> Int {
return num1 + num2 + num3
}
// 2.默認參數
func makeCoffee(coffeeName : String = "拿鐵") -> String {
return "制作了一杯\(coffeeName)咖啡"
}
makeCoffee("雀巢")
makeCoffee("貓屎")
makeCoffee()
// 3.可變參數
func sum(nums : Int...) -> Int {
var result = 0
for num in nums {
result += num
}
return result
}
sum(12, 30, 40)
sum(44, 20, 30, 44, 55, 66)
// 4.引用參數
var m = 20
var n = 30
// 如果形參前面有inout,則需要傳遞指針到函數內
func swapNum(inout m : Int,inout n : Int) {
let temp = m
m = n
n = temp
}
swapNum(&m, n: &n)
print("m:\(m) n:\(n)")
// 5.函數的嵌套使用(不常用)
func test() {
func demo() {
print("demo")
}
print("test")
demo()
}
test()
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。