>source

함수 유형을 var로 사용하는 방법이 있는지 알고 싶습니다., 예를 들어이 코드에서 버튼 탭 동작에서 트리거되는 함수를 보내려고합니다. 이런 종류의 프로그래밍이 Swift에서도 가능합니까?

The down code is not working and It is for SwiftUI, but the question is applicable to Swift as well.

struct ContentView: View {
@State var backgroundColor: Color = Color.white
func backgroundColorFunction() { backgroundColor = Color.red }
var body: some View {
    
    ZStack {
        
        backgroundColor.ignoresSafeArea()
        
        CustomView(incomingFuction: backgroundColorFunction()) // :Here
        
    }
    
}
}
struct CustomView: View {
var incomingFuction: ???funcType??? = ???funcType???()
var body: some View {
    
    Button("update Background Color") {
        
        incomingFuction()
        
    }
   
    }
}

  • 답변 # 1

    예, 가능하며 특히 SwiftUI에서 널리 사용됩니다.

    업데이트 된 코드는 다음과 같습니다.

    struct FuncContentView: View {
        
        @State var backgroundColor: Color = Color.white
        
        func backgroundColorFunction() { backgroundColor = Color.red }
        var body: some View {
            ZStack {
                backgroundColor.ignoresSafeArea()
                
                CustomView(incomingFuction: backgroundColorFunction) // << here !!
            }
        }
    }
    struct CustomView: View {
        
        var incomingFuction: () -> ()   // << here !!
        
        var body: some View {
            Button("update Background Color") {
                incomingFuction()
            }
        }
    }
    
    

  • 이전 amazon web services - AWS OpsWorks"start_failed"상태이고 로그가 없습니까?
  • 다음 python - Django 쿼리 세트가 잘못 렌더링됩니다 만 표시합니다