-
ν¨μ ( Functions )Swift 2022. 6. 16. 17:33
ν¨μλ₯Ό μ μΈνκΈ° μν΄μλ 맨 μμ func ν€μλλ₯Ό λΆμ΄κ³ ν¨μλͺ ( νλΌλ―Έν° μ΄λ¦ : λ°μ΄ν° νμ ) -> λ°ν νμ μΌλ‘ μ μν©λλ€.
func greet(person: String) -> String { let greeting = " Hello" + person + "!" return greeting }
func - ν¨μλΌλ κ²μ μ€μννΈ μ»΄νμΌλ¬μκ² μλ €μ£Όλ ν€μλ
ν¨μλͺ - ν¨μμ ν λΉλλ μ΄λ¦
νλΌλ―Έν° μ΄λ¦ - ν¨μ μ½λ λ΄μμ μ°Έμ‘°λλ 맀κ°λ³μμ μ΄λ¦
λ°μ΄ν° νμ - ν¨μμ μ λ¬λλ 맀κ°λ³μμ νμ
λ°ν νμ - ν¨μκ° λ°ννλ κ²°κ³Όμ λν λ°μ΄ν° νμ
μ μν ν¨μμ μΈμ κ°μ λ£μ΄ νΈμΆν΄λ³΄κ² μ΅λλ€.
print(greet (person: "Tim Cook") ) // "Hello Tim Cook! "
νλΌλ―Έν°κ° μλ ν¨μ( Functions Without Parameters)
func HelloWorld() -> String { return " Hello World ! " } print( HelloWorld() ) //"Hello World !"
λ°ν κ°μ΄ μλ ν¨μ ( Functions Without Return Values )
func greet(person: String){ print("Hello \(person) !") } greet(person: "James") //"Hello James !"
β» μμ μ½λλ ν¨μλ₯Ό λ§λ€ λμ ν¨μ μμμ λ°ν κ°μ μ μΈνμ§ μμμ§λ§ λ°ν κ°μ΄ μμ΅λλ€. λ°ν κ°μ΄ μ μλμ§ μμ ν¨μλ VoidλΌλ νΉλ³ν νμ λ°νν©λλ€.
볡μμ κ°μ λ°ννλ ν¨μ ( Fuctions with Multiple Return Values )
ννμ μ΄μ©νμ¬ ν¨μμ λ°ν κ°μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) }
본격μ μΈ μ€νμ μμμ νμ¬ μμ κ°, ν° κ°μ λ°°μ΄ μ²« λ²μ§Έ μμλ‘ λ£μ΄μ£Όλ©° forλ¬Έμμλ λ°°μ΄μ λ λ²μ§Έ μμλΆν° λ°°μ΄ κ°μλ§νΌ λ°λ³΅λ¬Έμ΄ λμκ°λ©° if , else if λ¬Έμ κ±°μ³ λ°°μ΄ μμ μλ κ°μ₯ μμ κ°κ³Ό ν° κ°μ νλ³νμ¬ currentMin, currentMaxμ λ£μ΄μ£Όκ² λ©λλ€.
let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) print("min is \(bounds.min) and max is \(bounds.max)") // "min is -6 and max is 109"
μ΅μ λ νν λ°νν ( Optional Tuple Return Types )
λ보기Swiftλ νλ‘κ·Έλ¨μ μμ μ±μ λμ΄κΈ° μν΄ μ€λ₯λ₯Ό λ°μνλ κ²μ λ°©μ§νκ³ μ μ€λ₯ λμ nilκ°μ λ°νν¨μΌλ‘μ¨ κ°λ°μμκ² λ¬Έμ κ° μλ€λ κ²μ μ립λλ€. nilκ°μ -> κ°μ΄ μμμ λ»ν©λλ€.
μ€λ₯ λ°μμ κ°λ₯μ±μ΄ μ‘°κΈμ΄λΌλ μμΌλ©΄ μ΅μ λλ‘ μ μν΄μΌ ν©λλ€.
μ΅μ λμ λ³λλ‘ μ‘΄μ¬νλ μλ£νμ΄ μλ κΈ°λ³Έ μλ£νμ λμνλ μ΅μ λ νμ μ λλ€.
func minMax(array: [Int]) -> (min: Int, max: Int)? { if array.isEmpty { return nil } var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) }
μ€μ λ°ν κ°μ μ κ·ΌνκΈ° μν΄μλ if letκ³Ό κ°μ μ΅μ λ 체μ΄λμ μ¬μ©νκ±°λ κ°μ μΈλνμ ν΄μΌ ν©λλ€.
λ보기μ΅μ λ 체μ΄λ
- μ΅μ λ 체μ΄λμ nilμΌ μλ μλ νλ‘νΌν°λ, λ©μλ μ§μλ₯Ό νλ κ³Όμ μ λ§ν©λλ€. κ°μ κ°μ§κ³ μλ€λ©΄ κ·Έ κ°μ λ°ννκ³ λ§μ½ κ°μ΄ nilμ΄λ©΄ nilμ λ°νν©λλ€.
κ°μ μΈλν
- κ°μ₯ μ£Όμν΄μΌ νλ λ°©λ²μ λλ€ force unwrappingμ μ΅μ λ νμ μ λ³μλ₯Ό μ¬μ©ν λ λ³μ μ΄λ¦ λ€μ λλν(!)λ₯Ό λΆμ¬μ£Όλ©΄ λ©λλ€.
//μ΅μ λ 체μ μ¬μ© μ if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) { print("min is \(bounds.min) and max is \(bounds.max)") } // "min is -6 and max is 109"
μΈμ λΌλ²¨ μ§μ ( Specifying Arugument Labels )
func ν¨μλͺ ( μ λ¬μΈμ λ μ΄λΈ1 맀κ°λ³μ1μ΄λ¦: 맀κ°λ³μ1νμ ) -> λ°ννμ { return λ°νκ° } func greet(person: String, from hometown: String) -> String { return "Hello \(person)! Glad you could visit from \(hometown)." } print(greet(person: "Bill", from: "Cupertino")) //"Hello Bill! Glad you could visit from Cupertino."
맀κ°λ³μ μ΄λ¦κ³Ό λλΆμ΄ μ λ¬ μΈμ λ μ΄λΈμ μ§μ ν΄μ€ μ μμ΅λλ€. μ λ¬ μΈμ λ μ΄λΈμ λ³λλ‘ μ§μ νλ©΄ ν¨μ μΈλΆμμ 맀κ°λ³μμ μν μ μ’ λ λͺ ννκ² ν μ μμ΅λλ€.
μΈμ μλ΅ ( Omitting Argument Labels )
func someFunction(_ firstParameterName: Int, secondParameterName: Int) { // ν¨μ μμμ firstParameterName, secondParameterName // μΈμλ‘ μ λ ₯λ°μ 첫λ²μ§Έ, λλ²μ§Έ κ°μ μ°Έμ‘°ν©λλ€. } someFunction(1, secondParameterName: 2)
μΈμ© λ° μΆμ²
'Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ μ΄λ¬Έ ( Control Flow ) (0) 2022.07.26 μ λμ½λ , μμ€ν€μ½λ ( Unicode , ASCII ) (1) 2022.07.25 컬λ μ νμ ( Collection Types ) (1) 2022.07.18 λ¬Έμμ΄ λ° λ¬Έμ ( Strings and Characters ) (0) 2022.07.17 κΈ°λ³Έ μ°μ°μ ( Basic Operators ) (0) 2022.07.16