Swiftの関数は、特定のタスクを実行する独立したコードブロックです。
Swiftの関数は、パラメータ名の無いシンプルな C スタイルの関数から、パラメータごとにローカルと外部のパラメータ名がある複雑な Objective-C スタイルのメソッドまで表現することができます。
ここでは、
- 関数の定義と呼び出し方法
- 関数のパラメータと戻り値によるさまざまな関数の書き方
について解説します。
参考本
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus
関数の定義と呼び出し
関数を定義するとき、関数が入力値として取る 1 つ以上の名前と型を持つパラメータを任意に定義することができます。
また、関数が完了したときに、関数が出力として返す値の型を、戻り値の型として任意に定義することもできます。
let greeting = “Hello, ” + personName + “!”
return greeting
}
丸括弧内に String の引数値を渡して、sayHello(“Anna”) のようにして関数 sayHello(_:) を呼び出します。この関数は String の値を返すため、文字列を出力する関数 print(_:separator:terminator:)に sayHello(_:) を渡すことができます。
関数は参照型なので、この場合、printにsayHelloの参照が渡されます。
// “Hello, Anna!” と出力
関数のパラメータと戻り値によるさまざまな関数の書き方
パラメータが無い関数の書き方
入力パラメータは、関数の定義に必須ではありません。
return “hello, world”
}
複数のパラメータがある関数の書き方
関数の丸括弧の中に、カンマ区切りで複数の入力パラメータを記述することができます。
if alreadyGreeted {
return sayHelloAgain(personName)
} else {
return sayHello(personName)
}
}
戻り値が無い関数の書き方
戻り値の型は、関数の定義に必須ではありません。
print(“Goodbye, \(personName)!”)
}
戻り値の型がオプショナルである関数の書き方
関数が返す型に値が無い可能性がある場合、戻り値の型にオプショナルを使用することができます。
let greeting = “Hello, ” + personName + “!”
return greeting
}
オプショナルについては
Swiftのオプショナル
という記事を参照してください。
複数の戻り値がある関数の書き方
関数が複数の値で構成される戻り値を返すための型として、タプル型を使用することができます。
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 になりえることを反映するため、戻り値の型にオプショナルなタプルを使用することができます。
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の関数の定義と呼び出し方法、および、関数のパラメータと戻り値によるさまざまな関数の書き方について解説しました。