Swift実践入門
スポンサーリンク

プロパティ/イニシャライザ/メソッド(型の構成要素)についてはすでに基本的なことは学習済みですが、新たな気づきがあったらココに記録しておきます。

Swiftの「型」は3種類

  • クラス(class xxx {})
  • 構造体(struct xxx {})
  • 列挙型(enum xxx {})

この記事ではこれらの「型」を構成する共通要素(プロパティ/メソッド/イニシャライザ/サブスクリプト等)についてまとめます。

 

プロパティ

インスタンスプロパティ

型のインスタンスに紐つくプロパティ。一般的にプロパティといったらこっちを指す。

インスタンスが生成されるまでに値が代入できていれば良い。

 

スタティックプロパティ

型そのものに紐つくプロパティ。宣言時、先頭に「static」キーワードをつけて定義できる。主にインスタンス間で共通する値の保持などに利用される。

宣言時に必ず初期値を持たせる必要がある

 

 

ストアドプロパティ

値を保持するプロパティ

インスタンスプロパティにもスタティックプロパティにもなり得る。

上の例の「signature」「to」「body」もストアドプロパティです。

 

コンピューテッドプロパティ

値を保持しないすでに存在するストアドプロパティなどから計算して値を返すプロパティです。

定義するにはget/setを使用します。

インスタンスプロパティにもスタティックプロパティにもなり得る。

書式
var プロパティ名: 型名 {
    get {
        return文によって値を返す処理
    }   
    set {
        値を更新する処理
        プロパティに代入された値には定数newValueとしてアクセスできる
    }
}
 

プロパティオブザーバ

ストアドプロパティの値の変更を監視し、変更前と変更後に文を実行するのも。

定義するにはストアドプロパティの定義に{}を追加し、willSet,didSetキーワードを使います。

書式
var プロパティ名 = 初期値 {
    willSet {
        プロパティの変更前に実行する文
        変更後の値には定数newValueとしてアクセスできる
    }    didSet {
        プロパティの変更後に実行する文
    }
}
 

イニシャライザ

イニシャライザは型のインスタンスを初期化する。プロパティの宣言時に初期値を持たないプロパティはイニシャライザ内で初期化する必要があります。

失敗可能イニシャライザ

イニシャライザの引数によってはプロパティを初期化できないこともあります。

初期化に失敗する可能性のあるイニシャライザは「失敗可能イニシャライザ」として表現することもでき、結果はoptional型として返します。

init?(引数)のように定義します。初期化の失敗はreturn nilで表し、イニシャライザはnilを返します。

 

メソッド

メソッドにも型のインスタンスに紐づいたインスタンスメソッドと、型自身に紐づいたスタティックメソッドがあります。

インスタンスメソッド

単にメソッドと呼ぶとには大抵こっちのこと。

funcキーワードで定義したメソッドはデフォルトでインスタンスメソッドとなる

 

スタティックメソッド

主にインスタンスに依存しない処理に使われます。

定義するには先頭にstaticキーワードを使います。

 

オーバーロード

異なる型の引数や戻り値を取る同名のメソッドを複数用意し、引数や戻り値の代入先の型に応じて実行するメソッドを切り替える手法です。

引数のオーバーロード

 

戻り値のオーバーロード

 

戻り値の代入先の型アノテーションが省略されているなど、型推論ができないときはコンパイルエラーとなる。

 

サブスクリプト

配列や辞書などのコレクションへの要素へのアクセスを統一的に表すための文法です。

引数と戻り値の文法は関数と同じだが、ラベルに関してはデフォルトでは「_」となっている。

ゲッタ・セッタはコンピューテッドプロパティと同様。

書式
subscript (引数) -> 戻り値の型 {
    get {
        return文によって値を返す処理
    }
    set {
        値を更新する処理
    }
}
サブスクリプトを使用するにはインスタンスが代入された変数・定数に[]で囲った引数をつけて変数名[引数]のように書きます。ex) aaa[1]

値の取得時(ex: aaa[1])にはゲッタが呼び出され、変数名[引数] = 新しい値のように値が代入される時にはセッタが呼び出される。(ex: aaa[1] = 4

また、コンピューテッドプロパティ同様ゲッタの定義は必須だが、セッタは任意。セッタが存在しない場合はgetと{}を省略できる。

メソッド同じくオーバーロードで型に応じて実行するサブスクリプトを切り替えることも可能

 

エクステンション

すでに存在している型にプロパティなどの型を構成する要素を追加することをエクステンションと言います。

書式
extension (エクステンションを定義する対象の)型 {
    (対象の型に追加したい)要素
}
 

エクステンションでは、ストアドプロパティを追加することはできない。コンピューテッドプロパティを追加する。

イニシャライザの追加も可能

型のネスト

型の中に型を定義することを型のネストという。

有名なものにString.Index型がある

Swift(iOS)が学べるオンラインスクール ランキング
CodeCamp
CodeCamp
7〜24時まで授業可能で働きながらでも学べる!!
料金
講師の質
コースの種類
転職サポート
ポイント1エンジニア経験2年以上のベテラン講師によるオンライン授業
講師は全員が現役のエンジニアで、他のスクールによく見られるアルバイト講師ではありません。マンツーマン指導で自分のレベルにあったカリキュラムが組め、満足度も高いです。また、自社開発企業への転職指導にも定評があります。

ポイント2無料レッスン体験&無料受講相談で事前に話が聞ける
事前にレッスンを体験して授業の雰囲気や学習ペースを確認できます。またエンジニア転職を目指す方にはどのコースが向いているかなどが聞けるカウンセリング(受講相談)も無料。エンジニアの生の声が聞けるので自分が働き出した時のことをイメージできます。

TechAcademy

授業型ではなく自習型なので自分のペースで学べる
料金
講師の質
コースの種類
転職サポート
ポイント1自習スタイルでチャット質問は何回でも無料
自分の分からないところを質問するスタイルなのでわかるところはサクッと、わからないところはじっくりと、無駄なく学べます。チャットの質問が無料なので、料金を気にせず何回でも聞けます。また、メンターがつくのでカウンセリングで学習の進捗やモチベーションの管理もしてくれます。
ポイント21週間の無料体験と無料カウンセリング、安心の返金制度も
無料体験の期間は1週間もあり、納得してから契約できるので安心です。事前の無料カウンセリングでは、その人にあったアドバイス等をもらうことができるので気軽に活用しよう。転職保障コースの場合、転職できなかったら全額返金!!
侍エンジニア塾
プログラミングスクールの老舗NO.1
料金
講師の質
コースの種類
転職サポート
ポイント1歴史があるからノウハウも豊富
日本で初めてオンラインのマンツーマンレッスン指導を導入した実績十分のスクール。講師も現役エンジニアでメンタリングもあるため転職のサポートも手厚く、面接対策や自己PRのフィードバックまで対応してくれます。

ポイント2転職成功率94.1%、挫折率8%
コースによっては転職成功で受講料が0円に!!  絶対にエンジニアになりたいという意思があれば超低額で転職できます。事前の無料体験で相談も可能なため、まずは話だけ聞いてみるのもあり。

おすすめの記事