곡λΆν λ΄μ©μ μ 리ν κΈμ λλ€.
ν¨μ
- ν¨μλ?
- ν¨μμ μ μμ νΈμΆ
- μΌκΈ κ°μ²΄, ν¨μ
- μ€μ²© ν¨μ
- μ’ λ£λμ§ μλ ν¨μ
- λ°ν κ°μ 무μν μ μλ ν¨μ
1. ν¨μλ?
ν¨μλ μμ μ κ°μ₯ μμ λ¨μμ΄μ νλμ μμ νλ‘κ·Έλ¨μΌλ‘ λ³Ό μ μλ€.
μ€μννΈμμμ ν¨μλ μΌκΈ κ°μ²΄μ΄λ€. λ°λΌμ ν¨μλ₯Ό λ€λ₯Έ κ°λ€μ²λΌ νλμ κ°μΌλ‘λ μ¬μ©ν μ μλ€.
μ€μννΈμμ ν¨μλ λ€λ₯Έ μΈμ΄λ³΄λ€ μμ λκ° λλ€.
μ€μννΈμ ν¨μλ μ¬μ μ(μ€λ²λΌμ΄λ, override)μ μ€λ³΅ μ μ(μ€λ²λ‘λ, overload)λ₯Ό μ§μνλ€.
μ€λ²λΌμ΄λ override | μ¬μ μ μμ ν΄λμ€κ° λΆλͺ¨ν΄λμ€μ μν΄ μ 곡λ λ©μλλ₯Ό νΉμ ν ννλ‘ λ€μ ꡬννλ κ²μ΄λ€. |
μ€λ²λ‘λ overload | μ€λ³΅ μ μ 맀κ°λ³μμ μ΄λ¦κ³Ό νμ , 맀κ°λ³μμ κ°μκ° λ€λ₯΄λ€λ©΄ κ°μ μ΄λ¦μΌλ‘ μ¬λ¬ κ°μ ν¨μλ₯Ό λ§λ€ μ μλ€. μ λ¬ μΈμ λ μ΄λΈ λ³κ²½λ§μΌλ‘λ λ€λ₯Έ ν¨μκ° λκΈ° λλ¬Έμ μ€λ²λ‘λκ° κ°λ₯νλ€. |
2. ν¨μμ μ μμ νΈμΆ
ν¨μ μ μμ κΈ°λ³Έ νν
func sayHello() -> String {
"Hello!"
//return "Hello!"μ κ°μ λμ
}
print(sayHello())
//Hello μΆλ ₯
- ν¨μ λ΄λΆμ μ½λκ° λ¨ ν μ€μ΄κ³ , κ·Έ μ€ν λ¬Έμ₯μ νμ μ΄ ν¨μμ λ°ν νμ κ³Ό μΌμΉνλ€λ©΄ return ν€μλλ₯Ό μλ΅ν μ μλ€.
func sendLetter(from myName: String,
to yourName: String,
_ content: String) -> String {
return "Dear \(yourName),\n \(content) \n \(myName)"
}
var letter:String = sendLetter(from: "yh", to: "renee", "Hello!")
print(letter)
//μΆλ ₯
Dear renee,
Hello!
yh
- 맀κ°λ³μ(Parameter)μ μ λ¬μΈμ(Argument)
- 맀κ°λ³μ: ν¨μλ₯Ό μ μν λ μΈλΆλ‘λΆν° λ°μλ€μ΄λ μ λ¬ κ°μ μ΄λ¦. μ (μ: myName)
- μ λ¬μΈμ(λλ μΈμ) : ν¨μλ₯Ό μ€μ λ‘ νΈμΆν λ μ λ¬νλ κ°. λ° (μ: "yh")
- μ λ¬μΈμ λ μ΄λΈ
- ν¨μ μΈλΆμμ 보μ΄λ μ΄λ¦. μ λ¬μΈμ λ μ΄λΈμ μ§μ νμ§ μμλ€λ©΄, 맀κ°λ³μκ° μ λ¬μΈμ λ μ΄λΈ μν μ λμ νλ€. (μ: from)
- μ λ¬μΈμ λ μ΄λΈμ λ³λλ‘ μ§μ νλ©΄ ν¨μ μΈλΆμμ 맀κ°λ³μμ μν μ μ’ λ λͺ νν ν μ μλ€.
- μ λ¬μΈμ λ μ΄λΈ(맀κ°λ³μ μ΄λ¦)μ μ¬μ©νκ³ μΆμ§ μλ€λ©΄, μμΌλ μΉ΄λ μλ³μ(_)λ₯Ό μ¬μ©νλΌ.
func sendLetter(from myName: String,
_ content: String,
to yourName: String = "my friend") -> String {
return "Dear \(yourName),\n \(content) \n \(myName)"
}
letter = sendLetter(from: "88yh", "Hi!!")
print(letter)
letter = sendLetter(from: "john", "Nice to meet you!", to: "Mina")
print(letter)
//μΆλ ₯
Dear my friend,
Hi!!
88yh
Dear Mina,
Nice to meet you!
john
- μ€μννΈμ ν¨μμμλ 맀κ°λ³μμ κΈ°λ³Έκ°μ μ§μ ν μ μλ€. κΈ°λ³Έκ°μ μ€μ ν 맀κ°λ³μλ ν¨μ νΈμΆ μ μ λ¬ μΈμλ₯Ό λ°μ§ μμ μλ, λ°μ μλ μλ€. (μ: μ μμ μ sendLetter ν¨μλ‘, sendLetter(from:_:) κ°λ₯ sendLetter(from:_:to:) κ°λ₯ )
- +μΆκ°) μ€μν 맀κ°λ³μλ μμͺ½μ λ°°μΉνλ κ²μ΄ μ’λ€. κΈ°λ³Έκ°μ΄ μλ 맀κ°λ³μλ μ£Όλ‘ μ€μν κ°μ μ λ¬ν κ°λ₯μ±μ΄ λλ€. λ°λΌμ κΈ°λ³Έ κ°μ΄ μλ 맀κ°λ³μλ₯Ό μμ λ°°μΉνλ€.
func sayFavoriteList(favoriteList: String...) {
for favorite in favoriteList {
print("I Love \(favorite)")
}
}
sayFavoriteList(favoriteList: "LaLaLand", "blue", "purple")
- κ°λ³ 맀κ°λ³μ:
- 맀κ°λ³μμ κ°μλ₯Ό μ μ μμ λ μ¬μ©νλ€.
- 0κ° μ΄μμ κ°μ λ°μμ¬ μ μμΌλ©°, μ λ¬ μΈμ κ°μ λ°°μ΄μ²λΌ μ¬μ©νλ€.
- ν¨μλ§λ€ ν κ°μ κ°λ³ 맀κ°λ³μλ₯Ό κ°μ§ μ μλ€.
3. μΌκΈ κ°μ²΄, ν¨μ
μ€μννΈμ ν¨μλ μΌκΈ κ°μ²΄μ΄κΈ° λλ¬Έμ νλμ λ°μ΄ν° νμ μΌλ‘ μ¬μ©ν μ μλ€. μ¦, 맀κ°λ³μμ νμ , λ°νκ°μ νμ , λ³μμ νμ μΌλ‘ μ¬μ©λ μ μλ€.
μΌκΈ κ°μ²΄λ ν¨μν νλ‘κ·Έλλ° ν¨λ¬λ€μκ³Ό μ°κ΄μ΄ μλ€. ν¨μν νλ‘κ·Έλλ° ν¨λ¬λ€μμ λν κ°λ¨ν μ€λͺ .
https://88yhtserof.tistory.com/17?category=966954
ν¨μλ₯Ό λ³μμ νμ μΌλ‘ μ¬μ©ν κ²½μ°
func isEvenNumber(_ number: Int) -> Bool {
if number % 2 == 0 {
return true
}
return false
}
print(isEvenNumber(2))
let function1: (Int) -> Bool = isEvenNumber
print(function1(5))
//νμ
λ³μΉμ μ¬μ©νμ¬ λνλΌ μλ μλ€.
typealias CheckInt = (Int) -> Bool
let function2: CheckInt = isEvenNumber
print(function2(10))
- λ³μμ νμ μΌλ‘ μ¬μ©νλ κ²½μ° λ°μ΄ν° νμ λΆλΆμ '(맀κ°λ³μ νμ ) -> λ°ννμ ' μ μ λλ€.
- λ€λ₯Έ λ°μ΄ν° νμ κ³Ό λμΌνκ² νμ λ³μΉμ μ¬μ©νμ¬ λνλΌ μ μλ€.
νμ λ³μΉμ λν μ€λͺ
https://88yhtserof.tistory.com/21?category=966954
μ λ¬μΈμκ° ν¨μμΈ κ²½μ°
func sayResult(_ number:Int, function: (Int) -> Bool) {
if function(number) {
print("\(number)λ μ§μμ
λλ€.")
}else{
print("\(number)λ νμμ
λλ€.")
}
}
sayResult(10, function: isEvenNumber)
4. μ€μ²© ν¨μ
- μ€μννΈλ λ°μ΄ν° νμ μ μ€μ²©μ΄ κ°λ₯νλ€. λ°λΌμ ν¨μ μμ ν¨μλ₯Ό λ£λ μ€μ²© ν¨μλ κ°λ₯νλ€.
- μ°λ¦¬κ° λ³΄ν΅ μ μν ν¨μλ μ μ ν¨μμ΄λ€. λ°λΌμ λͺ¨λ μ μ΄λλ μ¬μ©μ΄ κ°λ₯νλ€. νμ§λ§ ν¨μ μμ ν¨μλ μ§μ ν¨μλ‘ ν΄λΉ ν¨μμ μμ ν¨μ μμμλ§ ν¨μλ₯Ό μ¬μ©ν μ μλ€.
- μ΄λ λ¨μ μΌλ‘ λ³΄μΌ μλ μμ§λ§, λΆνμν λ²μλ λΉΌκ³ ν¨μκ° μ¬μ©νλ λ²μκΉμ§λ§ λ²μλ₯Ό νμ ν μ μλ€λ μ₯μ μ΄λ€.
- λ΄λΆ ν¨μλ₯Ό μΈλΆμμλ μ¬μ©ν΄μΌ νλ€λ©΄, λ°ν κ°μΌλ‘ ν¨μλ₯Ό μ€μ νμ¬ μΈλΆκΉμ§ μ¬μ© λ²μλ₯Ό νμ₯ν μ μλ€.
5. μ’ λ£λμ§ μλ ν¨μ
- λΉλ°ν ν¨μ(Nonreturning function) λλ λΉλ°ν λ©μλ(Nonreturning method)
- μ’ λ£λμ§ μλλ€λ κ²μ returnλμ§ μλλ€λ κ². μ μμ μΌλ‘ λλμ§ μλ ν¨μ
- μ€λ₯λ₯Ό λμ§κ±°λ μ€λν μμ€ν μ€λ₯λ₯Ό λ³΄κ³ νλ λ±μ μΌμ νκ³ νλ‘μΈμ€λ₯Ό μ’ λ£ν΄ λ²λ¦°λ€.
- λ°ν νμ Never
6. λ°ν κ°μ 무μν μ μλ ν¨μ
- @discardableResult λ₯Ό ν¨μ μ μΈ μμ μμ±
- ν¨μμ λ°ν κ°μ 무μν΄λ λλ€λ μλ―Έ
- μ€μννΈ νμ€ λΌμ΄λΈλ¬λ¦¬ λ©μλμμ λ³Ό μ μλ€.
κ³΅λΆ μλ£
https://ko.wikipedia.org/wiki/λ©μλ_μ€λ²λΌμ΄λ©
μ€λ²λΌμ΄λ μ μ
μΌκ³° - μ€μννΈ νλ‘κ·Έλλ° 5ν (SWIFT5)