sel2
4월 13, 2021, 2:10오후
#1
우리 팀 회의 하다가 argument label 관련된 얘기 나와서 복습 했던 코드 공유합니다.
argument label 를 Swift 설계할 때 넣은 이유 공감하시나요…? 저희 팀은 더 헥갈린다 라는 결론을 내렸었습니다…ㅎㅎㅎㅎㅎ
===========================================================
The use of argument labels can allow a function to be called in an expressive, sentence-like manner,
while still providing a function body that’s readable and clear in intent.
func printHello(name: String, _ welcomeMessage: String) {
print(“(name)님, (welcomeMessage)”)
}
func printHello2(_ name: String, _ welcomeMessage: String) {
print(“(name)님, (welcomeMessage)”)
}
func printHello3(n name: String, w welcomeMessage: String) {
print(“(name)님, (welcomeMessage)”)
}
printHello(name:“장혁”,“안녕하세요”)
printHello2(“장혁”,“안녕하세요”)
printHello3(n:“장혁”, w:“안녕하세요”)
//printHello3(name:“장혁”, welcomeMessage:“안녕하세요”) //error
좋아요 1
argument label이 있는 경우와 없는 경우를 비교해보죠~
다음은 테이블 뷰에서 특정 셀(섹션 0, 로우 3)을 선택하는 함수를 호출하는 코드에요.
tableView.selectRow(at: IndexPath(row: 3, section: 0), animated: true, scrollPosition: .middle)
이 코드에서 argument label을 없앤 코드는 다음과 같습니다. 비교를 위해서 임의로 삭제했고, 그냥 사용하면 에러가 발생합니다.
tableView.selectRow(IndexPath(3, 0), true, .middle)
비교해보면 어떤가요?
개인적인 취향이 있겠습니다만
제 개인 의견으로, 잘 만든 API 구조에서 파라미터 레이블이 전혀 거슬리지 않고 코드에 도움이 되는 거 같습니다.
대신 가로로 긴 모니터가 필요하겠죠???
argument label을 포함해서 좀 더 나은 API 설계에 관해서 API Design Guideline - Swift.org - API Design Guidelines 를 참고해보세요.
좋아요 1
WWDC의 Modern Swift API Design 비디오 링크를 첨부합니다.
sel2
4월 14, 2021, 9:58오전
#4
안녕하세요! 이재훈 강사님
강사님은 parameter name 을 설명 주셨고 저는 얘기는 argument lable을 말씀 드렸습니다…
혹시 제가 잘 못 이해했나 매우 조심스러운데요…
func someFunction(argumentLabel parameterName: Int) {
// In the function body, parameterName refers to the argument value
// for that parameter.
}
제가 예제로 들었던 것 중에 (1) funtion에서 “name” parameter 만 사용하는 경우는 완벽하게 이해합니다.
(1) funtion 을 호출 할 때 “name” pameter를 생략하면 오류 발생하구요 그래서 printHello(name:“장혁”,“안녕하세요”)
func printHello(name: String, _ welcomeMessage: String) {
print(“(name)님, (welcomeMessage)”)
}
(3) 번 function 처럼 굳이 n, w, argument label 까지 써야 할까 …? 질문이었고
그리고 예로 들어주신 selectRow는 parameter name을 생략 못 하지 않나요…? (동공 지진… 제가 잘 못 이해한 걸까요? )
tableView.selectRow(IndexPath(3, 0), true, .middle)
좋아요 1
아 제가 argument label과 parameter name을 혼용해서 사용했네요.
제가 예제로 작성한 두 코드는 모두 함수를 호출하는 코드입니다. 이 중 두 번째 코드에서 함수를 호출하는 코드에 argument label이 있는 경우와 없는 경우를 비교하기 위해서 임의로 argument label을 생략했습니다. 이 부분은 혹시나 이후에 오해가 더 생길까봐 내용을 수정하겠습니다.
알고 계시듯이 Swift에서 argument label을 생략한 채로 호출하면 에러가 발생하겠죠.
좋아요 1