[Swift]アクセス制御を理解してください!
8916 ワード
この本は「SWIFTプログラミング」Bookを勉強した後に書いたものです.
アクセス制御
アクセス制御とは?
- 접근제어는 코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능이다.
- 불필요한 접근으로 의도치 않은 결과를 초래하거나 꼭 필요한 부분만 제공을 해야하는데 전체 코드가 노출될 가능성이 있을 때 접근제어를 이용한다.
アクセスレベル
- 접근제어는 접근수준 키워드를 통해 구현할 수 있다.
- 각 타입에 특정 접근수준을 지정할 수 있고, 타입 내부의 프로퍼티, 메서드, 이니셜라이저에도 접근수준을 지정할 수 있다.
- 접근수준을 명시할 수 있는 키워드는 open, public, internal, fileprivate, private 가 있다.
オープン・アクセス・レベル
- 접근제어는 코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능이다.
- 불필요한 접근으로 의도치 않은 결과를 초래하거나 꼭 필요한 부분만 제공을 해야하는데 전체 코드가 노출될 가능성이 있을 때 접근제어를 이용한다.
- 접근제어는 접근수준 키워드를 통해 구현할 수 있다.
- 각 타입에 특정 접근수준을 지정할 수 있고, 타입 내부의 프로퍼티, 메서드, 이니셜라이저에도 접근수준을 지정할 수 있다.
- 접근수준을 명시할 수 있는 키워드는 open, public, internal, fileprivate, private 가 있다.
共通アクセス・レベル
public
キーワードを使用してアクセスレベルを指定できる要素内部-内部アクセスレベル
internal
は基本アクセスレベルであり、タグは必要ありません.fileprivate-ファイル外部専用アクセスレベル
プライベート・アクセス・レベル
画像ソース:https://dev-jiwon.github.io/swift-grammar-13/
アクセス制御実施上の注意事項
API
として使用する機能を公開アクセスレベルとして指定し、他のモジュールが特定の機能にアクセスできるようにする必要があります.private class AClass {
//AClass의 접근 수준이 비공개 접근수준이므로 이 메서드의 접근수준도 비공개 접근수준으로 취급
public func someMethod() {
// ...
}
}
//AClass의 접근수준이 비공개 접근수준이므로 공개 접근수준 함수의 매개변수나 반환 값 타입으로 사용할 수 없음
public func someFunction(a: AClass) -> AClass {
return a
}
//오류 발생
読み取り専用インプリメンテーション
set
)と表示されている場合は、設定者のみのアクセスレベルを低く指定できます.public struct SomeType {
private var count: Int = 0
public var publicStoredProperty: Int = 0
//설정자는 비공개 접근수준
public private(set) var publicGetOnlyStoredProperty: Int = 0
internal var internalComputedProperty: Int {
get {
return count
}
set {
count += 1
}
}
//설정자는 비공개 접근수준
internal private(set) var internalGetOnlyComputedProperty: Int {
get {
return count
}
set {
count += 1
}
}
}
var someInstance: SomeType = SomeType()
print(someInstance.publicStoredProperty) //0
someInstance.publicStoredProperty = 100
print(someInstance.publicGetOnlyStoredProperty) //0
//someInstance.publicGetOnlyStoredProperty = 100 //오류 발생
print(someInstance.internalComputedProperty) //0
someInstance.internalComputedProperty = 100
print(someInstance.internalGetOnlyComputedProperty) //1
//someInstance.internalGetOnlyComputedProperty = 100 //오류 발생
Reference
この問題について([Swift]アクセス制御を理解してください!), 我々は、より多くの情報をここで見つけました https://velog.io/@zooneon/Swift-접근제어에-대해-알아보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol