HOME > アクセスコントロール
fileprivateやopenという新しいアクセスコントロール
Swift3から色々かわります。宣言名長いなぁとの最初の印象でした。fileprivateやopen、新しい宣言です。どうやら ファイル内に限定されたfileprivate宣言。従来のprivate変数は関数内等の{}で囲まれた変数になるようです。
openはSwift2までのpublicと同じ挙動で、publicがサブクラスできなくなるクラスとなります。(つまりSwift2のFinalは サブクラスを制限する書式でしたので、Public Final => public, Public -> Open と変化しています。)
確かに今までは関数内の変数宣言もprivateでクラスで宣言されているのもprivateでしたので、差分を明確に するためかと思われます。
open > public > internal > fileprivate > privte
- open: symbol visible outside the current module(モジュールの外からでもアクセスできる+継承できる)
- public: symbol visible outside the current module(モジュールの外からでもアクセスできる+継承できない)
- internal: symbol visible within the current module(モジュールの中からのみアクセスできる)
- fileprivate: symbol visible within the current file(宣言したファイル内だけアクセスできる)
- private: symbol visible within the current declaration(宣言した定義の中だけアクセスできる)
参考:Scoped Access Level
参考:Swift 3.0 をいまから学ぶ Swift Evolution ウォッチング
参考:#22 Swift 3 Access Control (Xcode 8 Beta 6)
参考:What is the 'open' keyword in Swift?
やってみた
IBM Swift SandboxはSwift3.0ですので試してみました。privateとfileprivateの自分の認識が間違っていないのか試してみます。
private var test_private = 1
fileprivate var test_fileprivate = 2
func testFunction(){
print(test_private);
print(test_fileprivate);
}
testFunction()
コンパイルエラーなく通った!? test_privateだけアクセスできないエラーがでるかとの予想だったのですが違うのか、、、つきましては、 私の認識が現時点では間違っていました。fileprivateのスコープとprivateのスコープはどう違うのだろうか、、、
まとめ
もう少しつっこんで再トライ。fileprivateの認識がずれているのがわかりました。
↓こんな記事もありますよ!
![]() 2021-04-22 14:54:53 | かっこいいカルーセル厳選3点!WebGLを使った渋い画像スライダー。
昨日カッコいいスライダーを探す旅にでていました。
よく使われるswiper など、シンプルで使いやすくデザインも良いのですが、何かもの足りない、、、。
そこで調べていくと、webglを使... |
![]() 2021-04-20 14:46:43 | Twillioとは何??skywayとは何が違うのか。webrtcを使う際に判断する情報。
先日webrtc開発で「twillio」といった名前を聞きました。
以前自分でskywayを使ってwebrtcを試していた際に調べた時には、無かったような気もするんだけと、KDDIが絡んでいる... |
![]() 2021-04-19 13:58:21 | 先日久々にアップデートした妊娠週刊パパのAndroid版も。アカウント移管したいんだけど、注文ID見当たらないよ。
先日の妊娠、出産、育児関連のアプリ「妊娠週刊パパ」をAndroid studioで再リリースしようと思ってるんだけど、コンパイル失敗してエミュレータで動かせない。
多分sdkとかapiのバージ... |
Tweet
![]() |
|||
|