楽水

人々の創造が自由に表現できる舞台づくり

Swift

Swiftの関数【Swiftの関数の書き方をわかりやすく解説】

投稿日:2020年8月23日 更新日:


Swiftの関数は、特定のタスクを実行する独立したコードブロックです。
Swiftの関数は、パラメータ名の無いシンプルな C スタイルの関数から、パラメータごとにローカルと外部のパラメータ名がある複雑な Objective-C スタイルのメソッドまで表現することができます。
ここでは、

  • 関数の定義と呼び出し方法
  • 関数のパラメータと戻り値によるさまざまな関数の書き方

について解説します。
参考本
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus

関数の定義と呼び出し

関数を定義するとき、関数が入力値として取る 1 つ以上の名前と型を持つパラメータを任意に定義することができます。
また、関数が完了したときに、関数が出力として返す値の型を、戻り値の型として任意に定義することもできます。

func sayHello(personName: String) -> String {
 let greeting = “Hello, ” + personName + “!”
 return greeting
}

丸括弧内に String の引数値を渡して、sayHello(“Anna”) のようにして関数 sayHello(_:) を呼び出します。この関数は String の値を返すため、文字列を出力する関数 print(_:separator:terminator:)に sayHello(_:) を渡すことができます。
関数は参照型なので、この場合、printにsayHelloの参照が渡されます。

print(sayHello(“Anna”))
// “Hello, Anna!” と出力

関数のパラメータと戻り値によるさまざまな関数の書き方

パラメータが無い関数の書き方

入力パラメータは、関数の定義に必須ではありません。

func sayHelloWorld() -> String {
 return “hello, world”
}

複数のパラメータがある関数の書き方

関数の丸括弧の中に、カンマ区切りで複数の入力パラメータを記述することができます。

func sayHello(personName: String, alreadyGreeted: Bool) -> String {
 if alreadyGreeted {
  return sayHelloAgain(personName)
 } else {
  return sayHello(personName)
 }
}

戻り値が無い関数の書き方

戻り値の型は、関数の定義に必須ではありません。

func sayGoodbye(personName: String) {
 print(“Goodbye, \(personName)!”)
}

戻り値の型がオプショナルである関数の書き方

関数が返す型に値が無い可能性がある場合、戻り値の型にオプショナルを使用することができます。

func sayHello(personName: String) -> String? {
 let greeting = “Hello, ” + personName + “!”
 return greeting
}

オプショナルについては
Swiftのオプショナル
という記事を参照してください。

複数の戻り値がある関数の書き方

関数が複数の値で構成される戻り値を返すための型として、タプル型を使用することができます。

func minMax(array: [Int]) -> (min: Int, max: Int) {
var currentMin = array[0]
var currentMax = array[0]
 for value in array[1..<array.count] {
  if value < currentMin {
   currentMin = value
  } else if value > currentMax {
   currentMax = value
  }
 }
 return (currentMin, currentMax)
}

戻り値の型がオプショナルなタプルである関数の書き方

関数が返すタプル型にタプル全体の値が無い可能性がある場合、タプル全体が nil になりえることを反映するため、戻り値の型にオプショナルなタプルを使用することができます。

func minMax(array: [Int]) -> (min: Int, max: Int)? {
var currentMin = array[0]
var currentMax = array[0]
 for value in array[1..<array.count] {
  if value < currentMin {
   currentMin = value
  } else if value > currentMax {
   currentMax = value
  }
 }
 return (currentMin, currentMax)
}

以上、今回は、Swiftの関数の定義と呼び出し方法、および、関数のパラメータと戻り値によるさまざまな関数の書き方について解説しました。

-Swift
-, , ,

執筆者:

関連記事

Swiftのクロージャのエスケープ【escapingについてわかりやすく解説】

Swiftを学ぶ過程でescapingというキーワードに出会うことがあると思います。 今回は、クロージャのescapingについて以下の観点で丁寧も解説します。 Swiftのクロージャのescapin …

Swiftの関数のパラメータ【引数ラベルなどについてわかりやすく解説】

Swift 関数には、パラメータ名の無いシンプルな関数から、引数ラベルや各種パラメータがあるメソッドまで表現できる柔軟性があります。 パラメータは、関数の呼び出しを簡略化するためのデフォルト値を持つこ …

Swiftの関数型についてわかりやすく解説

Swift のすべての関数には型があり、関数のパラメータの型と戻り値の型で構成されます。 この型を Swift の他の型と同じように使うことができ、他の関数にパラメータとして関数を渡すことや、関数から …

Swiftの継承についてわかりやすく解説

クラスは、別のクラスからメソッド、プロパティ、および他の特徴を継承することができます。 あるクラスが別のクラスから継承するとき、継承するクラスをサブクラス、継承されるクラスをスーパークラスと呼びます。 …

Swiftの列挙型をわかりやすく解説

プログラムを作成するとき、曜日(月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日)やカードのスート(スペード、クラブ、ダイヤ、ハード)のように決まった範囲の要素(種類)を持つ集合を扱う場合がある …