Notice
Recent Posts
Recent Comments
Link
大器晩成
함수의 활용 본문
함수의 파라미터, 아규먼트
파라미터(인자, 매개변수) 또는 내부 매개변수: 함수 정의 시, 함수 정의에 입력값으로 사용되는 변수 (내부사용)
아규먼트(인수, 전달인자) 또는 외부 매개변수: 함수 호출 시, 함수가 필요한 파라미터의 타입과 일치하는 실제 값 (외부사용)
파라미터와 아규먼트의 예시
func printName(name: String) { //name -> 파라미터
print("안녕 냐 아룸은: \(name)")
}
printName(name:"zerogbug") // "zerobug" (아규먼트,전달인자)
- 함수 호출 시, 전달인자 name도 동일하게 호출해야 합니다.
- 이때, name은 Argument Label(아규먼트 레이블)이자, 파라미터 네임(Parameter Name)이라고 할 수 있습니다.
- Argument Label : 함수를 호출할 때 사용하는 이름
- Parameter Name: 함수 내에서 사용할 파라미터 이름
아규먼트 레이블(Argument Label) / (외부 매개변수)
아규먼트 레이블이란 함수 호출 시 인자값을 구분하기 위해 사용되는 레이블입니다.
#아규먼트 레이블
func 함수이름 (<아규먼트레이블> <내부매개변수명>: <타입>,<아규먼트레이블> <내부매개변수명>: <타입>...){
}
func printName2(last name: String) {
print("안녕 내 성은 \(name)") // 함수 내부에서는 name 매개 변수 사용
}
printName2(last: "Zerobug") // 함수를 호출할 때에는 아규먼트 레이블 first를 사용
- 아규먼트 레이블은 매개변수 이름 앞에 붙입니다..
- 항상 매개변수 앞에 띄어쓰기 한 칸이 있어야 합니다.
- 전달인자는 어떤 이름으로 함수애 값을 보내줄 것이지를 명시한 것입니다.
- 매개변수는 어떤 이름으로 함수 내부에서 사용할 것인지를 명시합니다.
- 전달 인자를 사용하면 함수 밖에서 함수 안으로 어떤 값을 가져왔는지, 이 값을 어떤 이름을 붙여 매개변수로 사용할 것인지를 명시할 수 있습니다. 이 경우 해당 값이 어떤 기능을 하는지를 살려서 매개변수 이름을 붙이게 되면 코드의 가독성이 좋아집니다.
아규먼트 레이블 생략 (와일드카드 패턴)
- 아규먼트 레이블은 함수 정의부에 매개변수와 함께 사용하는 것이고, 생략이 가능합니다.
- 또한 와일드카드 패턴(_)으로 생략도 가능합니다
아규먼트 레이블 생략
#아규먼트 레이블 생략
func addPrintFunction(_ <매개변수명>: <매개변수 타입>, _ <매개변수명>: <매개변수 타입>)
func addPrintFunction(_ firstNum: Int, _ secondNum: Int) {
print(firstNum + secondNum)
}
addPrintFunction(1, 2) // 전달인자 생략
- Argumtnt Label은 생략이 가능하지만 Parameter Name은 절대 생략할 수 없다.
Argument Lable(아규먼트 레이블) & Parameter Name(파라미터 네임) 한 번에 명시
#한 번에 명시하기 (name :Type, name: Type)
func sayhello(<매개변수명>: <매개변수 타입>, <매개변수명>: <매개변수 타입>){
}
func sayhello(name: String) {
print("Hello, \(name)") //name은 Parameter Name으로 쓰여서 함수 내부에서도 name 파라미터 사용
}
sayhello(name: "Zerobug") // 실제 호출할 때 Argument Label 또한 name으로 사용
가변 파라미터
함수의 파라미터에 정해지지 않은, 여러 개의 값을 넣는 것도 가능합니다. (Variadic Parameters)
#가변인자
func 함수이름(<매개변수명>: <매개변수 타입>...){
<실행할 내용>
}
#1
func total(_ numbers: Int...) { // 타입뒤에 ...을 붙이면 가변파라미터가 된다
var total: Int = 0
for number in numbers {
total += number
}
print(total)
}
total(10,20,30)
#2
func avgAndTotal(scoreInt: Int..., scoreDouble: Double...) {
var sum: Int = 0
var avg: Double = 0.0
for score in scoreInt {
sum += score
}
for score in scoreDouble {
avg += score
}
avg = avg / Double(scoreDouble.count)
print("Sum: \(sum)")
print("Avg: \(avg)")
}
avgAndTotal(scoreInt: 10,20,30, scoreDouble: 10.0,20.0,30.0)
// 출력: Sum: 60
// 출력: Avg: 20.0
- 하나의 파라미터로 2개 이상의 아규먼트를 전달할 수 있습니다.
- 아규먼트는 배열형태로 전달됩니다.
- 가변 파라미터는 여러 개도 사용이 가능합니다.
- 가변 파라미터는 기본값을 가질 수 없습니다.
함수의 파라미터에 기본값(디폴트)
함수에서 기본값을 정하게 되면 인자의 값이 없을 경우 기본 값으로 동작 인자의 값이 있으면 인자값으로 동작합니다.
#기본값을 갖는 매개변수
func 함수 이름(<매개변수>: <매개변수 타입> = <기본값>){
<실행할내용>
}
#1
func parameterDefault(num1: Int, num2: Int = 10) -> Int {
var result = num1 + num2
return result
}
parameterDefault(num1: 10) // Result: 20
parameterDefault(num1: 10, num2: 20) // Result: 30
#2
func echo(message: String, newline: Bool = true) {
if newline == true {
print(message,true)
} else {
print(message, false)
}
}
echo(message: "안녕하세요")
echo(message: "안녕하세요", newline: true) // 바로 위 구문과 동작 동일
echo(message: "False", newline: false) //명시적으로 값을 넣을 경우 기본 값이 아닌 명시된 값으로 동작
// 따라서 에코 함수는 다음과 같이 동작하는 것이다
//echo(message: String)
//echo(message: String, newline: Bool)
- 함수의 아규먼트 값이 항상 필요한 것은 아닙니다.
728x90
'iOS > Swift 문법' 카테고리의 다른 글
함수의 표기법(시그니처 표기법) (0) | 2024.11.08 |
---|---|
함수의 주의점 (3) | 2024.11.08 |
함수(Function) (0) | 2024.11.07 |
반복문 (While문) (5) | 2024.11.06 |
반복문 (For문) (0) | 2024.11.05 |