【Swift】「public」 を省略しない理由 🚫

iOS アプリの Apple 公式ドキュメントや著名作者のコードをあれこれ眺めていて気になっていたのは、

「なんで public を省略しないのか」

ということ。


public extension Image {
    static let fountain = Image(.fountain)
    static let fountainFill = Image(.fountainFill)
}

👉 sample-backyard-birds/BackyardBirdsUI/Images.swift at 1843d5655bf884b501e2889ad9862ec58978fdbe · apple/sample-backyard-birds hatena-bookmark

「はっきり明示する。」

のがポリシーなのかと思ったが省略してる箇所もある。

なんでなの ?

 

🚫 '***' is inaccessible due to 'internal' protection level

試しに消してみると、


extension Image {
    static let fountain = Image(.fountain)
    static let fountainFill = Image(.fountainFill)
}

呼んでいる場所でエラー発生。


'fountain' is inaccessible due to 'internal' protection level

見えてはいるけどアクセスができない。

 

🚫 まとめ

Java など他の言語とは違います。

アクセスレベルを省略した場合は「internal」。

同じモジュール内からしかアクセスできません。

移民はつらい。

しかし、さすが公式サンプルコードは勉強になります。

しっかりしています。

👉 Access Control | Documentation hatena-bookmark