본문 바로가기
Ios/Swift UI

계산된 속성

by 잘먹는 개발자 에단 2024. 7. 18.

* Swift Tutorial3 를 보다가 작성합니다.

 

Swift에서 {}는 클로저를 나타냅니다. 클로저는 일종의 익명함수로 볼 수 있습니다.

 

변수나 상수에 클로저를 할당할 수 있고, 클로저는 코드 블록을 캡슐화해서 나중에 호출하거나 실행할 수 있도록 합니다.

 

 

 

Swift Tutorial3에 다음과 같은 코드가 있습니다.

 

import SwiftUI


struct LandmarkList: View {
    @State private var showFavoritesOnly = false


    var filteredLandmarks: [Landmark] {
        landmarks.filter { landmark in
            (!showFavoritesOnly || landmark.isFavorite)
        }
    }


    var body: some View {
        NavigationSplitView {
            List(landmarks) { landmark in
                NavigationLink {
                    LandmarkDetail(landmark: landmark)
                } label: {
                    LandmarkRow(landmark: landmark)
                }
            }
            .navigationTitle("Landmarks")
        } detail: {
            Text("Select a Landmark")
        }
    }
}


#Preview {
    LandmarkList()
}

 

아직 swift 초보다 보니까 저 filteredLandmarks는 배열인데 뒤에꺼는 뭐지 하는 생각이 들었습니다.

 

저 속성은 계산된 속성입니다. 

 

계산된 속성은 값을 저장하지 않고, 대신에 호출될 때마다 특정 코드를 실행해서 값을 반환합니다.

 

그러니까 

 

filteredLandmarks는 호출될 때마다

 

showFavoritesOnly가 false이거나(전체보기)

해당 landmark가 즐겨찾기인 경우에,

 

해당 landmark를 필터링된 결과에 포함시킵니다.