swift에서 함수명과 외부매개변수이름을 함수로 정의한다.
===> 함수명이 같다고해도 외부매개변수이름이 다르면 다른 함수이다.
func 함수이름 (외부매개변수1이름 매개변수1이름: 매개변수1타입, 외부매개변수2이름 매개변수2이름:매개변수2타입 ...)->반환타입{
함수 구현부
return 반환값
}
외부매개변수이름를 추가하지 않은경우 외부매개변수이름은 내부매개변수 이름으로 대체 된다.
외부매개변수를 '_'(언드스코어)를 사용하게 되면 매개변수 없이 호출할수 있다.
swift에서는 보통 첫번째 매개변수는 언더스코어를 사용한다.
func sum(a:Int,b:Int)->Int{
return a+b
}
sum(a:1,b:2)
func sum(_ a:Int,b:Int)->Int{
return a+b
}
sum(1,b:2)
반환값이 없는 경우 '->' 다음에 Void 혹은 '->'과 함께 생략 하면 된다.
case1
func add ( a b: Int, c d: Int ...)->Void{
print(b+d)
return
}
add(a:1,c:2)
----------------------------------------------
case2
func add ( a b: Int, c d: Int ...){
print(b+d)
return
}
add(a:1,c:2)
func 함수명 ()->반환타입{
함수 구현부
return 반환값
}
호출 할때
함수명()
func three ()->Int{
return 3
}
func print () -> Void{
print("hello")
}
func print (){ print("hello")}
func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름:매개변수2타입=매개변수 기본값 ...)->반환타입{
함수구현부
return 반환값
}
!! 매개번수 기본값은 매개변수 목록중 뒤쪽에 위치하는 것이 좋다.
func greeting(friend:String, me:String = "yagom"){
print("Hello \(friend)! I'm \(me)")
}
greeting(friend:"world")
// 두번째 인자를 전달하지 않아도 기본값이 있기때문에 정상 작동한다.
func greeting(to friend:String, from me:String = "yagom"){
print("Hello \(friend)! I'm \(me)")
}
greeting(to:"world")
전달되는 매개변수의 개수를 알기 어려울 때 사용
가변 매개변수는 함수당 하나만 가질수 있다.
매개변수 목록의 뒤쪽에 위치하는 것이 좋다.
func 함수이름 (매개변수1이름:매개변수1타입,전달인자 레이블 매개변수2이름:매개변수2타입...)->반환타입{
함수구현부
return
}
func greeting(me:String friend:String...){
print("Hello \(friend)! I'm \(me)")
}
greeting(me:"yagom", friend:"a","b","c")
// 친구가 몇명이든 상관없다.
greeting(me:"yagom", friend: ) // 에러 :전달 하는 값이 있어야한다.
greeting(me:"yagom", friend: nil ) // 에러 : nil 은 안된다.
아무값도 넘기지 않을경우는 전달이자를 생략하면 된다.
greeting(me:"yagom")
===> Hello []! I'm yagom
func greeting(me:String friend:String){
print("Hello \(friend)! I'm \(me)")
}
func greeting(to me:String from friend:String){
print("Hello \(friend)! I'm \(me)")
}
var someFunction : (String, String)->Void = greeting(to:from:)
someFunction("eric","yagom")
someFunction = greeting(friend:me:)
// 타입이 다른 함수는 할당할수 없다.
func runAnother(function : (String , String)->Void){
function("jenny","mike")
}
runAnother(function:greeting(friend:me:)) //Hello jenny! I'm mike
// 함수를 호출
runAnother(function:someFunction) //Hello jenny! I'm mike
// 함수를 변수에 담아서 호출
의문점
가변매개변수에서 기본값 설정 가능한가?
출처 : 유튜브 "yagom"