Swift 함수
함수
애플리케이션 동작의 기본 단위 : 함수
함수 작성
func 키워드로 정의
함수의 리턴 타입
함수 이름
함수 파라미터
함수 정의
* 파라미터, 리턴 값이 없는 함수
func greeting() {
print("Hello Swift")
}
* 사용
greeting()
실행 결과
->로 결과 타입 작성
* 반환 타입이 없으면(Void) - 생략 가능
func greeting() -> Void {
}
* 반환 타입과 같은 타입의 값 반환
func areYouOK() -> Bool {
return true
}
func favoriteDrink() -> String {
return "Coffee"
}
다수의 값 반환 : 튜플
* 튜플 반환 함수 정의
func random3() -> (Int, Int, Int) {
let r1 = Int(arc4random() % 10)
let r2 = Int(arc4random() % 10)
let r3 = Int(arc4random() % 10)
return (r1, r2, r3)
}
* 사용
var (num1, num2, num3) = random3()
print("Random1 : \(num1) Random2 : \(num2) Random3 : \(num3)")
* 한번에
var r = random3()
함수의 파라미터
함수 파라미터
함수 동작에 필요한 정보 전달
파라미터 이름
파라미터 타입
파라미터가 있는 함수
* 파라미터 1개
func greeting(person: String) {
print("Hello " + person)
}
* 파라미터 2개
func greeting(person: String, emotion: String) {
print("Hello " + person + " with " + emotion)
}
파라미터 이름
내부 파라미터 이름
외부 파라미터 이름
내부 파라미터 이름
함수 내부에서 접근, 사용
함수 외부에서 접근/사용 불가
func greeting(person: String) {
print("Hello " + person)
}
외부 파라미터 이름
함수 외부(함수 호출)에서 사용
함수 내부에서 접근 불가
* 내부 파라미터 이름으로 자동 적용
func greeting(person: String) {
print("Hello " + person)
}
greeting(person: "My Friend")
* 파라미터가 2개인 함수 호출
greeting(person:"My Friend", emotion:"Smile")
수동으로 설정하기 - 파라미터 앞에 선언
별도로 설정하지 않으면 - 내부 파라미터 이름과 동일\
func greeting(who person: String) {
print("Hello " + person)
}
greeting(who: "Swift")
func greeting(person: String, with emotion: String) {
print("Hello " + person + " with " + emotion)
}
greeting(person: "My Friend", with: "Hug")
외부 파라미터 이름 사용 생략
파라미터 앞에 _ 기호 사용
오버로딩
* 같은 함수 이름, 다른 파라미터 타입
func sayHello(msg: String) {
print("sayHello(msg:)")
}
* 다른 외부 파라미터 이름
func sayHello(_ msg: String) {
print("sayHello(_:)")
}
* 다른 파라미터 타입
func sayHello(_ times: Int) {
print("sayHello(_:)")
}
파라미터 기본 값
func greeting(person: String = "Friend") {
print("Hello \(person)")
}
greeting(person: "Mom") // Hello Mom
greeting() // Hello Friend
혼동 주의
* 어느 메소드가 실행되는가?
greeting(whom: "World")
func greeting(whom person: String) {
print("Hello " + person)
}
func greeting(whom person: String, emotion: String = "Happy") {
print("Hello " + person + " with " + emotion)
}
가변 길이 파라미터(Varidic Parameter)
갯수가 정해지지 않은 다수의 파라미터
타입에 '...' 사용
함수 파라미터에 하나만 사용 가능
함수 내부에서 배열로 사용
func addAll(_values: Int...) -> Int {
print(values.count)
for v in values {
print(v)
}
}
addAll(1, 2, 3)
inout 파라미터
파라미터 값 변경하기
파라미터 타입 앞에 Inoout 작성
* 두 값을 바꾸기(swap) 예
func swapTwoValue(_ arg1 : inout Int, _ arg2: inout Int) {
let temp = arg1
arg1 = arg2
arg2 = temp
}
* 호출 : & 사용
var value1 = 1
var value2 = 2
swapTwoValue(&value1, &value2)
출처 : t academy 강좌