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

Posted

技术标签:

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

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

protocol MyProtocol 
    internal func test()

错误:

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

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

【问题讨论】:

【参考方案1】:

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

协议

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

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

这意味着你必须声明

internal protocol MyProtocol 
     func test()

【讨论】:

以上是关于Swift - 'internal' 修饰符不能在协议中使用的主要内容,如果未能解决你的问题,请参考以下文章

internal关键字

访问修饰符

在C#中internal关键字是啥意思?

Solidity函数修饰符

Swift-Swift - 访问控制(private,internal,public)

Swift-Swift - 访问控制(private,internal,public)