有没有办法“子类化”修饰符?

Posted

技术标签:

【中文标题】有没有办法“子类化”修饰符?【英文标题】:Is there a way to "subclass" a modifier? 【发布时间】:2020-11-13 17:42:03 【问题描述】:

我正在使用 SwiftUI 开发应用程序。我的第一个。

此应用使用.sheet().actionSheet().alert(),但这些修饰符的名称非常通用。

假设我使用.sheet() 显示表单,.actionSheet() 显示菜单,.alert() 显示错误消息。我必须不断记住每个人的功能。

最好将它们从 .sheet().actionSheet().alert() 转换为 .showForm().showMenu().showMessages()

是否可以“子类化”.sheet().actionSheet().alert(),给它们自定义名称?

【问题讨论】:

您想要相同的功能但使用新名称吗? 是的,这样更容易理解每​​个人的职责。 【参考方案1】:

这是一个使用自定义扩展包装所需视图的可能方法的演示。

使用 Xcode 12.1 / ios 14.1 测试

extension View 
    func showForm<Content: View>(isActive: Binding<Bool>, @ViewBuilder content: @escaping () -> Content) -> some View 
        self.sheet(isPresented: isActive, content: 
            Form  content() 
        )
    


struct DemoShowForm: View 
    @State private var isActive = false
    var body: some View 
        Button("Demo")  self.isActive = true 
            .showForm(isActive: $isActive) 
                Button("Close")  self.isActive = false 
            
    

【讨论】:

以上是关于有没有办法“子类化”修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

在 Perl/Moose 中,如何将修饰符应用于所有子类中的方法?

检测没有修饰符的按键

修饰符 + 不同的图表,Winforms

在 Expresso Store 中显示修饰符的总价

2017-04-14命名空间访问修饰符封装继承多态

Java的类,方法,变量等等的默认修饰符是啥