什么是 extension_access_modifier swiftlint?
Posted
技术标签:
【中文标题】什么是 extension_access_modifier swiftlint?【英文标题】:What is extension_access_modifier swiftlint? 【发布时间】:2018-07-11 05:26:54 【问题描述】:我将 Swiftlint 添加到一个项目中,但我无法理解针对 extension_access_modifier
的警告是什么。我主要在一个声明为 public 的类上看到它,但是在整个代码库中散布着一些扩展来添加功能。
public class Foo
// In SomeOtherClass.swift
extension Foo // Extension Access Modifier Violation: Prefer to use extension access modifiers
public func baz()
只要在另一个类中有extension Foo
,我就会在扩展上收到该警告。有人能解释一下它是什么吗?
【问题讨论】:
它可能更喜欢extension
是public
,而不是func
@Alexander 当我将 public 添加到扩展(例如public extension foo
)时,警告会出现在public func baz()
方法上
如果extension
明确为public
,则func
不需要太多
@Alexander 你能把你的评论放在答案中吗?那行得通。在 baz() 函数上没有公共的公共扩展。
【参考方案1】:
更清楚地表明你的扩展是公开的,而不是它的所有成员:
喜欢:
public extension Foo
func bar() ...
func baz() ...
func qux() ...
结束
extension Foo
public func bar() ...
public func baz() ...
public func qux() ...
【讨论】:
哈哈。我的项目正好相反。我想它是为了避免使用您的扩展向您的图书馆用户发送垃圾邮件,即我得到:'No Extension Access Modifier Violation: Prefer not to use extension access modifiers (no_extension_access_modifier)' @Honey 我展示的两个变体最终都是spamming the user of your library with your extensions
。 bar
、baz
和 qux
在这两个变体中仍然是公开的。
是的。我只是指出,如果您执行public extension Foo
,我的 swiftlint 会弹出警告。当我搜索 I 得到的错误时,我登陆了这个页面。它类似于问题中的错误,但完全相反以上是关于什么是 extension_access_modifier swiftlint?的主要内容,如果未能解决你的问题,请参考以下文章