2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift】型の構成要素〜型の基本〜

Last updated at Posted at 2020-12-12

私たちが当たり前のように使っているInt型やString型ですが、
もちろんどこかで事前に定義されています。

プロジェクトを作成する際に、その定義ファイルを読み込んでいるので
当たり前のようにいろいろな型を使うことができるようになっているのです。

様々な型が存在するわけですが、
**その型はどのように定義されているの?**って話になってきます。

型の定義方法は、
・クラス
・構造体
・列挙型

のどれかで定義されています。

そして、クラス・構造体・列挙型の3つには、
メソッドやプロパティなどの共通の要素が用意されています。

今回は、型に共通する構成要素について説明していきます。
クラス、構造体、列挙型については後日別の記事で説明する予定です。

#型に共通するもの

Int型やString型などの、代表的な型を構成する要素は、
型が持つ値を保存するプロパティと、型の振る舞いを表すメソッドの2つです。

プロパティは、型に紐付いた定数や変数と言い換えることができ、
メソッドは、型に紐付いた関数と言い換えることができます。

この2つに加えて、型を構成する要素には、
初期化を行うイニシャライザ、コレクションの要素を取得するサブスクリプト
型内に型を定義するネスト型などが存在します。

#型の基本
型についての基本知識として、定義方法とインスタンス化方法について説明します。

インスタンスとは、型を実体化したものであり、
型に定義されているプロパティやメソッドを持ちます。

つまり、String型の値"aaa"を定義した際、
aaaはString型のインスタンスであり、countプロパティやappend( )メソッドを持ちます。

関数と言ったりメソッドと言ったり、
ごちゃごちゃになるかもしれませんが、関数≒メソッドです。

呼び方が違うだけで構成しているものは同じです。

Int型に定義されている関数を、
Int型が持つメソッドと言ったりします。

##定義方法

構造体はstructキーワード
クラスはclassキーワード
列挙型はenumキーワード
 を使って型を定義します。


struct 構造体名 {
   構造体の定義
}

class クラス名 {
   クラスの定義
}

enum 列挙型名 {
   列挙型の定義
}

型を構成する要素であるプロパティやメソッドは、
全て{ }内に記述していきます。

##インスタンス化の方法

型をインスタンス化するには、型名に( )をつけてイニシャライザを呼びます。
必要に応じて( )内に引数を渡します。

型の定義とインスタンス化を合わせて行います。


// 構造体の定義
struct sample{ }

// 構造体sampleのインスタンス化
let instance = sample()

最低限の定義方法については以上になります!

この他にも、型を定義するにあたり様々な要素が必要になるので
それらについても記事にしましたので、是非ご覧ください。

【Swift】型の構成要素〜プロパティ前編〜
【Swift】型の構成要素〜メソッド〜
【Swift】型の構成要素〜イニシャライザ〜
【Swift】型の構成要素〜サブスクリプト〜
【Swift】型の構成要素〜エクステンション〜
【Swift】型の構成要素〜型のネスト〜

最後までご覧いただきありがとうございました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?