Swiftの構造体(struct)は、データモデルを作成し、プログラム内でデータを効果的に管理するための重要なツールです。
この記事では、Swift構造体の基本的な使い方から応用的なテクニックまでをコード例を交えて詳しく解説します。
構造体を利用して、簡潔で効率的なコードを書く手助けになるでしょう。
【迷ったらココ!】Swiftが学べるプログラミングスクール3選
当サイトではプログラミング学習やエンジニア転職に関する情報を発信しています。他の記事も合わせてご覧ください。
SwiftやiPhoneアプリ開発におすすめの本・参考書7選【現役エンジニアが解説】
iPhoneのアプリ開発を独学で勉強したい!なにか良い本は無いかな? SwiftやXcodeの勉強で挫折した...自分のレベルに合った参考書を知りたい! 今回はこんな悩みを解決していきます。 iPho ...
更新日:2024年1月31日
目次
Swiftの構造体の定義
まず、構造体を定義する方法から始めましょう。
1 2 3 4 | struct Point { var x: Int var y: Int } |
このコードでは、Pointという名前の構造体を定義しています。この構造体は、xとyという2つのプロパティを持っています。
Swiftの構造体のインスタンス化
構造体を使用するには、インスタンスを作成する必要があります。
1 | var origin = Point(x: 0, y: 0) |
このコードでは、Point構造体のインスタンスoriginを作成し、初期値を指定しています。
構造体のプロパティへのアクセス
構造体のプロパティにアクセスする方法です。
1 | print("x座標: \(origin.x), y座標: \(origin.y)") |
このコードでは、originのxとyプロパティにアクセスして、その値を表示しています。
構造体にメソッドを追加
構造体にメソッドを追加する方法です。
1 2 3 4 5 6 7 8 9 10 | struct Point { var x: Int var y: Int func distance(to other: Point) -> Double { let deltaX = Double(x - other.x) let deltaY = Double(y - other.y) return (deltaX * deltaX + deltaY * deltaY).squareRoot() } } |
このコードでは、distance(to:)というメソッドを追加し、2つのPointインスタンス間の距離を計算します。
ミュータブルなメソッド
構造体内でプロパティを変更するためにmutatingキーワードを使用する方法です。
1 2 3 4 | mutating func moveBy(x deltaX: Int, y deltaY: Int) { x += deltaX y += deltaY } |
このコードでは、moveBy(x:y:)メソッドを定義し、構造体内のプロパティを変更できるようにしています。
Swiftの構造体のイニシャライザをカスタマイズ
構造体のイニシャライザをカスタマイズする方法です。
1 2 3 4 | init(x: Int) { self.x = x self.y = 0 } |
このコードでは、xを指定してインスタンスを初期化し、yはデフォルト値0で初期化されます。
Swiftの構造体のプロパティオブザーバー
構造体のプロパティには、値が設定された際に自動的に実行されるプロパティオブザーバーを追加できます。
1 2 3 4 5 6 7 8 9 | struct Temperature { var celsius: Double { didSet { if celsius > 100 { print("気温が摂氏100度を超えました!") } } } } |
このコードでは、celsiusプロパティにdidSetプロパティオブザーバーを追加し、気温が100度を超えた場合にメッセージを表示します。
Swiftの構造体のイニシャライザの自動生成
Swiftでは、構造体のイニシャライザを自動的に生成できます。これにより、初期化コードを省略できます。
1 2 3 4 5 6 | struct Size { var width: Double var height: Double } let defaultSize = Size(width: 100, height: 200) |
このコードでは、Size構造体のイニシャライザを自動生成し、defaultSizeというインスタンスを作成しています。
Swiftの構造体の比較
構造体は値型であるため、比較演算子を使用して比較できます。
1 2 3 4 5 6 | let pointA = Point(x: 1, y: 2) let pointB = Point(x: 1, y: 2) if pointA == pointB { print("pointAとpointBは等しいです。") } |
このコードでは、2つの構造体を比較して、等しい場合にメッセージを表示します。
Swiftの構造体のコピーオンライト
構造体はコピーオンライト(値が変更された場合にコピーが作成される)の性質を持っています。これは、データの変更が予測可能で安全であることを保証します。
1 2 3 4 5 6 7 | var originalPoint = Point(x: 1, y: 2) var copyPoint = originalPoint copyPoint.x = 3 print(originalPoint.x) // 1 print(copyPoint.x) // 3 |
このコードでは、originalPointとcopyPointを比較し、値を変更しても元の構造体に影響を与えないことが示されています。
まとめ:Swiftの構造体(struct)の使い方をコードを用いて解説
Swift構造体は、データモデリングやプログラム内のデータ管理において非常に有用な概念です。
この記事では、Swift構造体の基本的な概念と使い方を詳しく解説しました。
構造体を活用することで、コードの読みやすさ、保守性、効率性を向上させることができます。
Swiftを学習中の方におすすめの記事
Swiftが学べるプログラミングスクールおすすめ6選【iPhoneアプリ開発】
Swiftを学習して挫折したからプログラミングスクールに入塾したい!でもどのスクールが良いんだろう... SwiftやiPhoneアプリ開発を学びたいけどまず何から始めたら良いのか分からない...プロ ...
更新日:2024年1月29日
SwiftやiPhoneアプリ開発におすすめの本・参考書7選【現役エンジニアが解説】
iPhoneのアプリ開発を独学で勉強したい!なにか良い本は無いかな? SwiftやXcodeの勉強で挫折した...自分のレベルに合った参考書を知りたい! 今回はこんな悩みを解決していきます。 iPho ...
更新日:2024年1月31日
SwiftとObjective-Cはどっちがおすすめ?【違いを徹底比較】
SwiftとObjective-Cだったらどっちを使えば良いのかな?両方の特徴や違いを詳しく知りたい! 今回はこんな疑問にお答えしていきます。 エンジニアを目指す人が最初に抱える悩みの1つに「プログラ ...
更新日:2024年1月31日