inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)

Button뷰, withAnimation

중괄호와 함수

1

jj4783

작성한 질문수 22

0

현재 버튼의 액션에

action: { addTodo() }

의 코드가

action: addTodo

로 리팩토링이 되었는데,

중괄호 문이 혹시 함수를 의마하나요?

ios swift swiftui swift5.5

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. jj4783님.

Button의 action 매개변수에서 중괄호 {}는 클로저를 나타내며, Swift에서 클로저는 일종의 코드 블록으로, 필요한 경우 실행할 코드 구성을 정의합니다.

원래 코드에서 action: { addTodo() }는 명시적으로 addTodo() 함수를 무명 함수(익명 함수)로 호출하여 클로저를 전달하는 방식입니다. 클로저는 함수를 직접 실행할 것을 지정합니다. 이 방식은 클로저의 실행 내용을 명확하게 보이게 하지만, 불필요한 코드 중복을 초래할 수 있습니다.

대신에 action: addTodo로 리팩토링한 코드는 addTodo 함수 자체를 클로저로 전달하는 것으로, 여기서는 addTodo 함수의 타입과 action에 전달할 클로저의 타입이 동일하기 때문에 함수 레퍼런스를 직접 전달합니다. 이를 통해 코드가 더 깔끔하고 간결해질 수 있습니다.

이런 리팩토링을 통해 Swift 언어의 함수 참조를 사용할 수 있는 문법을 활용하여 더 깔끔한 코드를 작성할 수 있습니다. 이러한 패턴은 클로저를 간단히 추상화해줌으로써, 중복 코드를 줄이고 가독성을 높이는 데 도움이 됩니다.

비슷한 주제에 대한 설명을 포함한 기존 답변은 다음 링크에서 확인할 수 있습니다:

이 답변이 이해에 도움이 되었기를 바랍니다! 추가로 궁금하신 사항이 있거나 도움이 필요하시면 주저하지 마시고 질문해주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

기본 뷰 디자인이 강사님과 다릅니다.

0

12

2

이미지 2x, 3x 질문

0

17

2

확인 버튼 만들 때 폰트 색상 화이트 주는 위치 문의드려요.

1

77

2

Button(action: label:)이 강의와 달라요!

1

74

2

HStack과 VStack에서 alignment와 spacing 방향이 이해가 잘 안갑니다.

1

85

2

modifiers 창이 안보여요.

1

119

2

showAlert 변수 mvi 패턴에서의 사용법

1

61

2

swift vs swiftUI

1

76

1

끝말잇기 로직 구현 중 ios 16 (iphone 16) 시뮬레이터 영어 입력 불가

1

94

1

@Binding된 객체는 자동으로 저장이 되나요?

1

102

2

섹션5. Class로 Todo 데이터 관리하기 부분에서 질문 있습니다.

1

88

2

JSON_Decodable.playground에서 print문이 안찍히는 문제

0

126

2

List를 넣으니 위치가 제대로 조정이 되던데 그럼 Spacer는 따로 넣을 필요가 없는걸까요?

1

117

1

콘솔창에 값이 안찍히고 있습니다.

1

155

2

todo 앱에서 미리 적어놨던 요소들은 왜 안나오나요?

1

141

2

Swift 6 업데이트 이후 Todo 예제 실행 오류

1

196

2

ToDo 앱 @Observable 기능(?) 질문입니다

0

219

2

Todo 앱 @Observable 질문입니다

2

201

2

VStack, HStack으로 뷰 구성하기 강의 padding 질문입니다

1

229

1

@State 특성(?) 질문입니다

1

170

2

6-7) 이미지 사이즈 지정 위치 질문드립니다.

1

182

1

강의 자료를 모아보는 프로그램을 제작해보려고 합니다!

0

193

1

NavigationLink 질문

1

159

1

서적 추천 부탁드립니다!

2

203

1