タイプのメンバーについて話しているときに違いが出てくるだけです。 private
は同じタイプ定義内の他のメソッドへのアクセスを制限しますが、同じ.swift
ファイル内にあるものはfileprivate
にアクセスできます。
トップレベル(型定義の外)に住んでいるもののために
、private
とfileprivate
まったく同じことを行います。あなたは
fileprivate extension Foo
{
var aa: Int
{
return aaa + 10
}
}
private extension Foo
{
var aaa: Int
{
return 20
}
}
を書くときあなたは本当に最終的には、同じプロトコル上の2つの拡張は、単一の拡張にコンパイラによって解決を取得
fileprivate extension Foo
{
var aa: Int
{
return aaa + 10
}
}
fileprivate extension Foo
{
var aaa: Int
{
return 20
}
}
を書きました。
fileprivate extension Foo
{
var aa: Int
{
return aaa + 10
}
var aaa: Int
{
return 20
}
}
あなたはこのような二つのキーワードを持つことが、いくつかのスウィフト建築家agree with youretardedだと思うと思われる場合。私はいくつかのスタイルガイドでは、public
とprivate
のアクセス修飾子(そして修飾子はinternal
ですが、デフォルトはこれがデフォルトです)を使用することをお勧めします。これは、一般的には、ファイルごとに制限するためです。 -moduleまたはper-typeベースは特に有用ではありません。
fileprivate
修飾子を使用する必要がある場合は、private
修飾子をタイプスコープの外部で使用しないでください。それは混乱します(その文脈ではprivate
は実際にはfileprivate
を意味します)、コードを読みにくくします。
延長の範囲がファイルされているので、それはだ場合うーん...私は疑問に思いますか? varsを拡張子の代わりにfileprivateおよびprivateとして宣言した場合、これは機能しません。 – Fogmeister
@Fogmeisterそうです、変数にアクセス修飾子を追加すると、これは機能しません。おそらくAppleはそれをしました。私的な拡張が意味をなさないので、私は私的な拡張で宣言されたすべてがそこにしか見えないことを意味します。 –
関連:http://stackoverflow.com/questions/39739813/private-vs-fileprivate-on-declaring-global-variables-consts-in-swift3、http://stackoverflow.com/questions/43054774/distinction-between -private-and-fileprivate-top-level-classes。 –