ν¨μλ νΉμ μμ μ μννλ μ½λ λͺ¨μμ΄λ€. ν¨μμ νλΌλ―Έν°λ ν¨μκ° μ λ ₯μΌλ‘ λ°λ νλ μ΄μμ νμ μΌλ‘ λ κ°μ λ§νλ€.
func ν¨μμ΄λ¦(λ§€κ°λ³μ) -> λ°ν κ° {
μ€νν μ½λ
return λ°νκ°
}
νλΌλ―Έν°μ 2λ₯Ό λν κ°μ λ°ννλ ν¨μλ λ€μκ³Ό κ°λ€.
func plusTwo(x: Int) -> Int {
return x + 2
}
plusTwo(x: 3)
ν¨μμ μ΄ν΄λ₯Ό λκΈ° μν΄ μΈμ λΌλ²¨μ μ¬μ©ν μ μλ€. νλΌλ―Έν° μ΄λ¦μ ν¨μλ₯Ό ꡬνν λ μ¬μ©νλ€λ©΄, μΈμ λΌλ²¨μ ν¨μκ° νΈμΆλ λ μ¬μ©λλ€. μΈμλΌλ²¨μ νλΌλ―Έν° μ΄λ¦ μμ 곡백μΌλ‘ ꡬλΆνλ€.
func plusTwo(at x: Int) -> Int {
return x + 2
}
plusTwo(at: 3)
μΈμλΌλ²¨μ μμΉ μλλ€λ©΄ μΈμ λΌλ²¨ λμ μ μΈλλ°_ λ₯Ό λ°λμ μμ±ν΄μ€μΌ νλ€.
func plusTwo(_ x: Int) -> Int {
return x + 2
}
plusTwo(3)
νλΌλ―Έν°μ κΈ°λ³Έκ°μ ν λΉν μ μλ€. κΈ°λ³Έκ°μ΄ μ μλμ΄ μλ€λ©΄ ν¨μλ₯Ό νΈμΆν λ νλΌλ―Έν°λ₯Ό μλ΅ν μ μλ€.
func plusTwo(x: Int, y: Int = 2) -> Int {
return x + 2
}
plusTwo(x: 3)
plusTwo(x: 3, y: 4) //λ°νκ°μ 5μ΄λ€.
plusTwo(x: 3, y: 4)μμ μ μ μλ―μ΄ νλΌλ―Έν°μ κ°μ΄ μ§μ λμ΄ μμ΄λ κΈ°λ³Έκ°μ΄ μ μ©λλ€.(κΈ°λ³Έκ° > νλΌλ―Έν° λΆμ¬ κ°)
νλΌλ―Έν°μ μ¬λ¬κ°μ μ
λ ₯κ°μ΄ μ λ¬νκΈ° μν΄μλ κ°λ³ νλΌλ―Έν°λ₯Ό μ¬μ©νλ€. κ°λ³ νλΌλ―Έν°λ μ¬λ¬κ°μ νΉμ νμ
μ κ°μ νμ©νλ€. νλΌλ―Έν° νμ
μ μ΄λ¦ λ€μ ...λ₯Ό μΆκ°νμ¬ μμ±νλ€.
func sum(_ x: Int...) -> Int {
var total: Int = 0
for i in x{
total += i
}
return total
}
sum(1,2,3,4)
ν¨μ νλΌλ―Έν°λ κΈ°λ³Έμ μΌλ‘ μμ(let)μ΄λ€. μ¦ ν¨μμ λ³Έλ¬Έμμ νλΌλ―Έν°μ κ°μ λ³κ²½ν μ μλ€. ν¨μ νλΌλ―Έν°μ κ°μ λ³κ²½νκ³ ν¨μ νΈμΆμ΄ μ’ λ£λ νμλ λ³κ²½λ κ°μ μ μ§νκ³ μΆλ€λ©΄ in-out νλΌλ―Έν°λ₯Ό μ¬μ©νλ©΄ λλ€. in-out νλΌλ―Έν°λ νλΌλ―Έν°μ νμ λ°λ‘ μ μ inout ν€μλλ₯Ό μμ±νλ©΄ λλ€. in-out νλΌλ―Έν°μ μΈμλ‘λ λ³μλ§ μ λ¬ν μ μλ€. ν¨μμ μμ κ°λ₯ν¨μ μ리기 μν΄ in-out νλΌλ―Έν°μ μΈμλ‘ μ λ¬ν λ λ³μμ μ΄λ¦ μμ &λ₯Ό λΆμ¬μ€λ€. (cμΈμ΄μ μ μ¬νκ²κ°λ€.....)
func swap(_ a: inout Int, _b: inout Int) {
let temp = a
a = b
b = temp
}
var num1: Int = 3
var num2: Int = 4
swap(&num1, &num2)
λ°νκ°μ μ μνμ§ μμλ λλ€. λ°νκ°μ μ μνμ§ μμμ§λ§ μ¬μ ν Void νμ μ λ°ννμ§λ§ μ΄λ 무μν΄λ λλ€.
func plusTwo(_ x: Int) -> Int {
print(x+2)
}
λ°λλ‘ μ¬λ¬κ°μ λ°νκ°μ μ§μ νμ¬λ λλ€. μ΄λλ νν νμ μ μ¬μ©νλ€.
func findMinMax(array: [Int]) -> (min: Int, max: Int) {
...
return (currentMin, currentMax)
}
let results = minMax(array: [8, -6, 2, 109, 3, 71])
print(results.min)
print(results.max)
λ°νλλ ννμ λν΄ κ°μ΄ μλ κ²½μ°λ λ°μν μ μλ€. μ΄λ΄ κ²½μ° μ΅μ
λ νν λ°ν νμ
μ μ¬μ©νμ¬ μ 체 ννμ΄ nil μΌ μ μλ€λ μ¬μ€μ λ°μν΄μΌ νλ€. (Int, Int)? μ κ°μ΄ νν νμ
μ λ«λ μκ΄νΈμ λ¬Όμνλ₯Ό λΆμ¬ μμ±νλ€. μ΄λ (Int, Int?)μ ν·κ°λ¦¬λ©΄ μλλ€!!!! μμ ν λ€λ₯Έ μλ―Έμ΄λ€.
μ΅μ
λ λ°μΈλ©μ ν΅ν΄ λ°νκ°μ΄ nilμΈμ§ νμΈν΄μΌ νλ€.
func findMinMax(array: [Int]) -> (min: Int, max: Int)? {
...
return (currentMin, currentMax)
}
if let results = minMax(array: [8, -6, 2, 109, 3, 71]){
print(results.min)
print(results.max)
}
ν¨μλ₯Ό νΈμΆν λ ν¨μ μ¬μ©μμ μ μ₯μμ λ§€κ°λ³μμ μν μ μ’ λ λͺ ννκ² νννκ³ μ ν λ μ¬μ©.
(λ§€κ°λ³μ1νμ
, λ§€κ°λ³μ2νμ
...) -> λ°ννμ
ν¨μ νμ μ¬μ© μμ.
func plusTwo(_ x: Int) -> Int {
return x + 2
}
var mathFunc: (Int) -> Int = plusTwo
mathFunc(3)
ν¨μ νμ μ λ€λ₯Έ ν¨μμ νλΌλ―Έν°λ‘ μ¬μ©ν μ μλ€.
func printMathResult(_ mathFunction: (Int) -> Int, _ a: Int) {
print("Result: \(mathFunction(a, b))")
}
printMathResult(plusTwo, 3)
λ€λ₯Έ ν¨μμ λ°ν νμ μΌλ‘ ν¨μ νμ μ μ¬μ©
func stepForward(_ input: Int) -> Int {
return input + 1
}
func stepBackward(_ input: Int) -> Int {
return input - 1
}
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
return backward ? stepBackward : stepForward
}
ν¨μμ λ©μλλ μ μ¬νμ§λ§ λ€λ₯΄κ² μ·¨κΈνλ€!!!
- ν¨μ : λ 립μ μΌλ‘ μν, νΉμ νμ μ μν΄μμ§ μμ
- λ©μλ : νΉμ νμ (κ°μ²΄)μ μν΄ νΉμ κΈ°λ₯μ μν