함수의 형태 및 사용
Swift의 함수의 형태와 사용방법에 대해 알아 보겠습니다
Parameter와 argument의 차이
Parameter(매개변수)는 함수 정의부의 값을 매개변수, 호출시의 값을 argument(인수)로 부릅니다
함수의 형태
C스타일 함수
int add (int x, int y){
return (x + y);
}
add(1,2);
|
cs |
Swift스타일 함수
func add(x:Int, y:Int) ->Int{
return (x + y)
}
print(add(x:1,y:2))
//3.0
|
cs |
Swift에서 함수를 호출할 때 변수명을 꼭 명시해 주어야 합니다
리턴값이 없을 경우엔 ->Void 생략가능합니다
함수의 자료형, 함수명
다음과 같이 표현합니다
함수명 | add(x:y:) |
함수타입 | (Int,Int) -> Int |
외부 매개변수 이름(Argument label)
외부에서 함수를 호출할 때 사용하는 argument label을 지정할 수 있습니다
func add(first x:Int, second y:Int) ->Int{
return (x + y)
}
print(add(first:1,second:2))//3
|
cs |
외부 매개변수 이름을 지정했다면 꼭 해당 이름을 사용해야 합니다
아래처럼 내부이름을 사용하면 컴파일 에러가 발생하게 됩니다
잘못된 예시
func add(first x:Int, second y:Int) ->Int{
return (x + y)
}
print(add(x:1,y:2))//error
|
cs |
매개변수 이름을 일부 사용하고 싶지 않으면 아래와 같이 사용할 수 있습니다
func add(_ x:Int, with y:Int) ->Int{
return (x + y)
}
print(add(1,with:2))//3
|
cs |
_은 함수를 하나의 문장처럼 사용할 수 있어서 많이 사용하는 스타일 입니다
add 1 with 3
외부이름을 사용하면 함수명도 바뀌게 됩니다
외부이름을 출력하려면 #function으로 출력이 가능합니다
예시)
func add(_ x:Int, with y:Int) ->Int{
print(#function)
return (x + y)
}//add(_:with:)
func mul(first a:Int, b:Int)->Int{
print(#function)
return (a*b)
}//mul(first:b:)
|
cs |
매개변수 디폴트값 지정
func add(_ x:Int, with y:Int = 3) ->Int{
return (x + y)
}
print(add(2))//5
|
cs |
func add(_ x:Int, with y:Int = 3) ->Int{
return (x + y)
}
print(add(2,with:5))//7
|
cs |
y값을 지정하지 않으면 자동으로 Int 3을 가지게 됩니다
여러 값 리턴
튜플 형태로 여러개의 값을 리턴할 수 있습니다
func converter(meters:Float)->(inch:Float, ft:Float){
let inch = meters * 39.3
let ft = meters * 3.2
return (inch, ft)
}
var lengthTuple = converter(meters:10)
print(lengthTuple)//(inch:393.0, ft:32.0)
print(lengthTuple.inch)//393.0
print(lengthTuple.ft)//32.0
|
cs |
가변 매개변수
매개변수 하나로 여러개의 값을 받을 수 있습니다
func add(numbers:Int...){
var sum=0
for num in numbers{
sum += num
}
print(sum)
}
add(numbers:1,2,3,4)//10
|
cs |
Call by reference
값이 아니라 주소를 참조 할 경우 매개변수의 값을 직접 변경할 수 있습니다
var myNum = 24
func half(num: inout Int) -> Int {
num = num/2
return num
}
print(myNum)//24
print(half(num:&myNum))//12
print(myNum)//12
|
cs |
매개변수 타입 앞에 inout을 붙여주면 Int타입의 주소값을 받을 수 있습니다
참고 자료
iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용
Swift 문서 참조
https://docs.swift.org/swift-book/LanguageGuide/Functions.html
'🍎iOS프로그래밍 > 오늘의 공부' 카테고리의 다른 글
Swift 클로저(Closure) 후행 클로저(trailing Closure) / iOS프로그래밍 (0) | 2021.10.01 |
---|---|
Swift 일급객체(First-class object) 일급시민(First-class citizen) / iOS프로그래밍 (0) | 2021.10.01 |
Swift의 반복문,제어문(if문, for문, repeat-whlie문 ,guard문, switch-case문) / iOS프로그래밍 (0) | 2021.09.26 |
Swift의 옵셔널(Optional) 개념 이해하기 / iOS 프로그래밍 (0) | 2021.09.17 |
Swift의 데이터 타입, 상수(let), 변수(var), 타입 추론/ iOS 프로그래밍 (0) | 2021.09.17 |
댓글