Swift 4では、privateが同じソースコードファイルの内線でも表示されているので、fileprivateアクセス修飾子とはどのように違いますか? 背景: Swift 3では、クラス内のプライベート変数は、同じファイル内のその拡張子には表示されません。そのためには、fileprivateを使用しなければなりませんでした。
アクセスできなくすることができ、私はエラーを取得する: internal class Animal { }
public class Dog: Animal {
var name: String
public init(name: String) {
self.name = name
}
}
Error: Class cannot be decl
私はfileprivateアクセスレベル修飾子は、それが宣言されたソースファイルに関数/プロパティーを使用して制限し、private - 宣言されたレキシカルスコープに限定されていることを知っています。しかし、このルールは拡張機能には適用されないようです。例えば。このコードは有効です: class Foo {
}
fileprivate extension Foo {
var aa