【Swift/SwiftUI】関数の宣言と呼び出し&引数の使用

本記事ではSwiftで関数を宣言する方法、関数の呼び出し、引数の渡し方までをわかりやすく解説していきます。

関数とは

関数とは複数の処理をひとつの集合体として、任意のタイミングで呼び出すことのできるコードブロックです。関数はSwiftに関わらず多くのプログラミング言語で使用されています。

関数には様々な使用方法があり、関数を呼び出して処理を任せたり、引数という値を渡して関数内で計算などの処理を行った結果を受け取ったりすることが可能です。

関数に処理をまとめることで、複数箇所で同じような処理を書いてコードが冗長になってしまうなどの無駄を省くことができます。

Swiftでは、関数名と引数名は小文字で始まるキャメルケースで記述されることが一般的です。

関数の定義方法

関数の定義の基本の形は、以下の画像のような形になります。関数の宣言を意味する「func」から書き始めて、関数名・引数・戻り値を追加して波括弧内に実際の処理を記載していきます。

関数名は関数内で実際に行なっている処理が後から見てもパッとわかりやすい名前とするのがベターです。例えば、ポイントを加算する目的の関数の場合には「addPoint」といったイメージです。

引数名の指定は、「引数名: データ型」という形式で行い、引数のデータ型が視覚的にわかりやすい仕組みになっています。「point: Int」のような記述です。

引数として受け取った変数は、「var 変数名」で宣言する変数と同様に関数内においては自由に値の代入や追加などの操作を行うことができます。

戻り値の前には「->」をつけ、StringやIntなどの戻り値のデータ型を指定してあげます。ここで指定したデータ型と異なる戻り値を返却しようとするとエラーが発生します。

また、戻り値がない関数の場合にはデータ型の代わりに、戻り値を返さないことを意味する「void」を設定します。

戻り値のある関数の例です。引数でもらった変数に1を加算し、戻り値のデータ型をIntにしているため、returnで加算後の値を呼び出し元に返却しています。

var beforePoint = 1

func addPoints(points: Int) -> Int {
    return points + 1
}

戻り値のない関数の例です。引数に10を加算していますが、戻り値のデータ型にはVoidを指定し、処理の中でreturnを行いません。

func totalPoints(totalPoint: Int) -> Void {
    totalPoint + 10
}

関数の呼び出し

先ほどまでで宣言した関数を呼び出す方法を解説していきます。

関数の呼び出しは、関数名(引数名:実引数)という形式で、関数側で指定している引数名に対して渡したい値である実引数を渡します。

以下の例では、beforePoint変数に対してaddPoints関数を利用して1を加算し、その演算結果をpoint変数に代入してprintしています。

addPoints関数呼び出し時にbeforePointを引数として渡しているため、関数内で使用しているpoints変数にはbeforePoint変数と同様の値がコピーされていることが確認できます。

addPoints関数に実際のbeforePointが渡っているわけではなく、値がコピーされているだけであり、addPoints関数内でpoints変数の値を変更してもbeforePointの値が変更されることはない点にはご注意ください。

var beforePoint = 1

func addPoints(points: Int) -> Int {
    return points + 1
}

var point = addPoints(points: beforePoint)
print(point)    //出力結果は2

また、関数には複数の引数を渡すこともでき、複数の引数を渡す場合には引数同士を「,」で区切ります。関数内で数学の公式などを作成しておけば、計算に必要な値を関数に渡すだけで計算結果をすぐに得ることも可能です。

以下は2つの引数を加算した結果を返却する関数の例です。

var beforePoint = 1
var secondBeforePoint = 4

func addPoints(points: Int, secondPoints: Int) -> Int {
    return points + secondPoints
}

var point = addPoints(points: beforePoint, secondPoints: secondBeforePoint)

最後に

本記事では、Swiftで関数を宣言してその関数を呼び出す方法を解説してきました。関数を作成して複数の処理を一つにまとめることで、1度の処理の記述で複数箇所から呼び出すことができて非常に便利です。

ソースコードの可読性も向上し、複数名での開発やメンテナンスにも影響が出ますのでぜひ関数の活用方法を覚えていってください。

他にもSwiftやSwiftUIでのリストの作成方法やリストにスワイプアクションを付与する方法についても解説していますのでぜひご確認お願いします。