From 62aa15afe99be3e4c7ef6da48ec9138eaade673a Mon Sep 17 00:00:00 2001 From: acevest Date: Tue, 7 Mar 2017 18:46:16 +0800 Subject: [PATCH] ... --- .../Functions.xcplaygroundpage/Contents.swift | 98 +++++++++++++++++- .../UserInterfaceState.xcuserstate | Bin 21215 -> 21477 bytes 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/learn/AcePlay/AcePlay.playground/Pages/Functions.xcplaygroundpage/Contents.swift b/learn/AcePlay/AcePlay.playground/Pages/Functions.xcplaygroundpage/Contents.swift index 3dbad16..ca35bc2 100644 --- a/learn/AcePlay/AcePlay.playground/Pages/Functions.xcplaygroundpage/Contents.swift +++ b/learn/AcePlay/AcePlay.playground/Pages/Functions.xcplaygroundpage/Contents.swift @@ -85,7 +85,7 @@ func Sum(_ numbers: Int...) -> Int { print(Sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) -// 外部参数包能相同, 但内部参数名不能相同 +// 外部参数标签能相同, 但内部参数名不能相同 func sameExternalParameterNames( ExName a: Int, ExName b: Int) -> Int { return max(a, b) } @@ -104,3 +104,99 @@ swapTwoInts(&IntA, &IntB) print("IntA: \(IntA) IntB: \(IntB)") +// 函数类型 +func addFunc(_ a: Int, _ b: Int) -> Int { + print(#function) + return a+b +} + +func mulFunc(_ a: Int, _ b: Int) -> Int { + print(#file, #function, #line) + return a*b +} + + +var someMathFunc: (Int, Int) -> Int +someMathFunc = addFunc +someMathFunc(1, 2) + +someMathFunc = mulFunc +someMathFunc(1, 2) + + +typealias MathFuncType = (Int, Int) -> Int +func printMathFuncResult(_ mathFunc: MathFuncType, _ a: Int, _ b: Int) -> Void { + print("Result: \(mathFunc(a, b))") +} + +printMathFuncResult(addFunc, 3, 4) +printMathFuncResult(mulFunc, 3, 4) + + + +// 函数类型作为返回值 +typealias StepFuncType = (inout Int) -> Int + +func stepForward(_ input: inout Int) -> Int { + input += 1 + print("step forward to \(input)") + return input +} + +func stepBackward(_ input: inout Int) -> Int { + input -= 1 + print("step backward to \(input)") + return input +} + +func chooseStepFunc(forward: Bool) -> StepFuncType { + if(forward) { + return stepForward + } + + return stepBackward +} + +var currentValue = Int(arc4random_uniform(20)) +print("current value: \(currentValue)") +while currentValue != 10 { + let moveTo: StepFuncType = chooseStepFunc(forward: currentValue < 10) + _ = moveTo(¤tValue) +} + + +func getRandomInt(_ n: UInt32) -> Int { + var r: Int = Int(arc4random_uniform(n)) + r *= arc4random_uniform(2) == 0 ? -1 : 1 + return r; +} + +// 嵌套函数 +func chooseStepFuncV2(forward: Bool) -> (inout Int) -> Void { + func stepForwardV2(_ input: inout Int) -> Void { + input += 1 + print("step forward to \(input)") + } + + func stepBackwardV2(_ input: inout Int) -> Void { + input -= 1 + print("step backward to \(input)") + } + + if forward { + return stepForwardV2 + } + + return stepBackwardV2 +} + +currentValue = getRandomInt(10) +print("current value: \(currentValue)") +while currentValue != 0 { + let moveTo = chooseStepFuncV2(forward: currentValue < 0) + moveTo(¤tValue) +} + + + + diff --git a/learn/AcePlay/AcePlay.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/AcePlay/AcePlay.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate index 3a2a549e8ecf7e0e8fd4615ed1efa6c4f8cb5e5e..fa0d0147ea01c7f18ee998865ac38ad45643b67f 100644 GIT binary patch delta 10940 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 D3d{{{ delta 10909 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 B@EiaD -- 2.44.0