2022. 6. 6. 21:15ㆍswift
매개변수란?
- 함수를 정의할 때 외부로부터 받아들이는 전달 값의 이름을 의미한다.
- 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수입니다. (위와 같은말이다)
- 대부분의 함수는 하나 이상의 매개변수를 가지며, 매개변수가 없는 함수도 존재합니다.
기본값을 받는 매개변수
- 함수에서는 매개변수마다 기본값을 지정해줄 수 있어 매개변수가 전달되지 않으면 기본값을 사용한다.
- 매개변수에 기본값을 설정하며 전달 값을 넘겨주지 않아도 기본값에 의해 동작할 수 있도록 만들 수 있다.
func echo (message:String, newline:Bool = true) {
if newline == true {
print(message, true)
} else {
print(message, false)
}
내부 매개변수, 외부 매개변수
-함수 내부에서 인자값을 받는 용도로 사용되는 매개변수는 내부 매개변수다.
반대로 함수를 호출할 때 사용하는 매개변수 이름을 외부 매개변수라고 한다.
var first = ""
var second = ""
func add(first x: Int, second y: Int) -> Int {
// first외부)x내부) 외부)내부)자료형 리턴형
// 함수를 정의할 때는 내부 매개변수명을 사용한다.
return(x + y) //return(first+secod)는 오류다. (외부를 쓰면안된다.)
}
함수를 호출 할 때 에는 외부 매개변수를 사용해야한다.
add(first: 10, second: 20) add(x:10, y:20) -오류다. (내부명을썼다.)
추가적으로 첫번째 외부 매개변수명만 생략하는경우 (ios 앱개발에 자주나온다고함)
func add(_ x:Int, with y: Int) -> Int {
return(x + y)
}
print(add(10, with: 20))
// 첫번째는 생략해서 곧바로 "10"입력 두번째는 with선언해서 "with+20"
매개변수의 생명주기
-스코프(Scope): 변수가 생존할 수 있는 범위이다.
범위를 기준으로, 전역(Global) 변수와 지역(Local)변수로 나뉜다.
전역 변수는 프로그램 내 모든 위치에서 참조가 가능하고, 프로그램이 종료되기 전까지 특별한경우 제외하고 삭제되지 않는다.
로컬 변수는 특정 범위 내에서만 참조하거나 사용할 수 있다. 조건절, 함수 구문 등 특정 실행 블록 내부에서 선언된
변수는 모두 지역변수이다. 그 블록이 끝나면 제거된다. 이를 변수의 생명주기 라고 한다.
컴파일러가 변수를 찾는 순서
1.함수 내부에서 정의된 변수를 찾음.
2.함수 외부에서 정의된 변수를 찾음.
3.글로벌 범위에서 정의된 변수를 찾음.
4.import된 라이브러리 범위
InOut 매개변수
-함수 내부는 함수 외부에 영향을 미칠 수 없다.
inout 키워드로 함수 외부에 영향을 미칠 수 있다. 값 자체를 전달하는 것이 아니라, 값이 저장된 메모리 주소를 전달한다는 의미다. 인자값에는 주소 추출 연산자 &를 붙여주어야 정상적으로 전달이 가능하다.
& 연산자는 C언어와 유사하고, inout은 포인터 개념과 유사하다.
매개변수 뒤에 클론(:)과 'inout' 키워드를 붙인다.
값에 의한 전달과 참조에 의한 전달
'swift' 카테고리의 다른 글
변수, 상수에 대하여 (0) | 2022.06.13 |
---|---|
테이블 뷰에 관하여 (0) | 2022.06.13 |
딕셔너리를 알아보자 (0) | 2022.06.06 |
함수 (0) | 2022.06.02 |
변수에 대해서 (0) | 2022.06.02 |