강의로 돌아가기
-

테스트와 상관없는 질문이 있습니다.

//atNoon의 값은 (35, 25) 이어야 합니다.
let atNoon = addTime(lunch, time2:walk)
print(atNoon)

여기에서 addTime의 두 번째 변수인 walk는 왜 time2:walk라고 붙여줘야 하나요?
addTime(time1:lunch, time2:walk) 라고 하거나 addTime(lunch, walk)라고 하면 에러가 나는데요.

함수 addTime에서 변수 time1, time2를 지정해 주었는데 왜 꼭 time2:walk라고 해야 하는 건지, 또 lunch값는 그렇게 표기하면 안되는건지 궁금합니다.

2 개의 답변
-

저도 궁금했는데 swift 4.0 플레이그라운드 기준으로는 둘다써야된다고 나오네요!

임진우

외부 인자 이름(External Parameter Names)
때론 함수를 호출할 때 각각의 인자에 이름을 붙이는게 유용할 때가 있는데 함수로 던져진 각 인자의 목적을 가르키기 위함.
함수 사용자에게 함수를 호출 할 때 인자에 이름을 지어주길 원하면 각 인자에게 외부 인자 이름을 지역 인자 이름에 붙이도록 정의함.
지역 인자 이름 앞에 한칸 띄우고 외부 인자 이름을 작성함.
func someFunction(externalParameterName localParameterName: Int) {
// function body goes here, and can use localParameterName
// to refer to the argument value for that parameter
}

typealias Time = (minute:Int, second:Int)

let lunch = (16, 37)
let walk = (18, 48)

// 함수의 인자와 리턴 타입을 명시해주세요
func addTime (_ time1: Time, time2 time2: Time) -> Time {
let secondSum = time1.second + time2.second
let second = secondSum % 60
let minute = time1.minute + time2.minute + (secondSum / 60)

// minute과 second를 이용해서 적절한 값을 리턴해주세요
return Time(minute, second)
}

//atNoon의 값은 (35, 25) 이어야 합니다.
let atNoon = addTime(lunch, time2: walk)

print(atNoon)

원하는 답이 저런식일지는 모르겠지만 그렇지 않고서는 time2: walk식으로 사용하지 않을것 같네요.
playground는 잘동작함다. playground와는 다소 차이가 있네요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.