목차
1. scope
2. Argument Label
3. inout 키워드
4. 값/참조에 의한 전달
5. 매개변수, 인자 등의 용어 정리
스코프(scope) : 변수와 상수를 사용할 수 있는 유효한 범위
아규먼트 레이블(argument label) : 펑션의 매개변수 입력값에 대한 설명
1) 자동입력에 매개변수 이름이 아닌 레이블이 뜨면서 입력값에 대한 설명을 보여준다.
[설명] 원래는 num1과 num2로 파라미터를 선언하였지만 Argument Label을 devideFirstNumber, bySecondNumber, multiflyFirstNumber, bySecondNumber로 주었다.
2) 개발자가 펑션 호출시 파라미터의 역할을 라벨을 통해 확인할 수 있다.
💁🏻♂️ 펑션의 매개변수는 변수일까 상수일까?
let 키워드로 되어있는 상수이다.
💁🏻♂️ 그렇다면 매개변수로 넘겨준 값울 변경하기는 아예 불가능할까?
inout 키워드를 통해 가능하다.
💁🏻♂️ inout 키워드로 선언된 펑션의 매개변수는 var(변수)이다.
- call by value (값에 의한 전달) : 값을 복사해서 전달
- call by reference (참조에 의한 전달) : 참조할 변수의 주소를 전달
⬆️ 변수 선언시 초기값으로 test1은 1, test2는 2이다.
⬆️ inoutTest2 펑션에 test1은 call by value로 전달하고, test2는 call by reference로 전달한다. 그리고 출력해본다. 1과 2를 전달했다면 1+2인 3으로 출력되어야 할 것 같지만 8로 출력되고 test2는 7로 바뀌어있다.
⬆️ test1은 1이라는 값이 복사되어 num1(상수)에 1이 대입된다. 하지만 num2(변수)에는 test2 메모리를 가리키고 있는 주소가 전달되면서 test2 메모리를 num2도 가리키게 된다. 따라서 num2에 7이라는 값을 주면 test2와 num2 모두 7로 변경된다. num1과 num2를 더하면 1 + 7이므로 8이다.
- parameter = 매개변수
- argument = 입력값 = 인자, 인수
- argument label = 입력값에 대한 설명
⬆️ 파라미터, 매개변수로 num1과 num2가 있다.
⬆️ argument, 인자, 인수로 1과 2를 주었다. argument label, 입력값에 대한 설명으로 firstNumber, secondNumber가 있다.