Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

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の認識がずれているのがわかりました。

↓こんな記事もありますよ!

のんでいるくすり: 3.11震災時の体験から開発されたお薬アプリ。無料

今日は薬を便利にかつ守秘的にメモできるアプリのんでいる薬をご紹介します。 実はアプリレビューは初めて。 SwiftサラリーマンのFBページを経由して開発者でもあり薬剤師のBlueRoy(ブルーロワ・インク) Inc. のShige様とお知り合いになる事ができて、是非レビューさせて下さいと私からお願いした経緯で今回レビュー記事に繋がりました。 Shige様、快く了承頂き本当にありがとうございました!

CoreTextでTextViewの一文字の向きを変える(#2)

さて、サンプルそのままだと面白くないので、本日6月から開始する自転車規制強化 にのっかったサンプル<自転車の転だけ横に曲げる>にしてみます。(14歳以上が対象。自転車のイヤホン装着や片手走行、 酔っ払い運転、歩道運転、片手スマホ、、、、今まで誰もがやり通してきたことが「逮捕や補導の対象」となるようです。赤切符もきられる ようになるとのことで、自転車に酔っ払ってのって自動車の免停なんかになりかね無いので注意です)

SwiftData+SqliteのDBファイル保存+Libraryフォルダから読込

さて、私の目標は事前に作成したSqliteのDBファイルをSwiftDataで読み込むことですので、その一連の作業を以下説明してまいります。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!