【问题标题】:Swift - 'internal' modifier cannot be used in protocolsSwift - 'internal' 修饰符不能在协议中使用
【发布时间】:2020-03-29 04:46:54
【问题描述】:

当我在 Swift 协议中声明内部函数时,出现编译器错误,

protocol MyProtocol {
    internal func test()
}

错误:

'internal'修饰符不能在协议中使用

如果我删除访问修饰符internal,则错误已解决,但我想知道为什么会收到此错误?正如documentation 提到的,如果我没有明确提及任何访问级别,默认访问级别将是内部的。那么为什么当我明确说明它时会产生编译器错误。

【问题讨论】:

    标签: swift compiler-errors protocols access-modifiers


    【解决方案1】:

    请在链接的文章中向下滚动

    协议

    如果您想为协议类型分配明确的访问级别,请在定义协议时这样做。这使您能够创建只能在特定访问上下文中采用的协议。

    协议定义中每个要求的访问级别会自动设置为与协议相同的访问级别。 您不能将协议要求设置为与其支持的协议不同的访问级别。这确保了协议的所有要求在采用该协议的任何类型上都是可见的。

    这意味着你必须声明

    internal protocol MyProtocol {
         func test()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 2016-03-26
      相关资源
      最近更新 更多