楽水

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

Swift

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

投稿日:


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
-, , ,

執筆者: