Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
func / 引数ラベル / デフォルト引数
Swiftの関数は『func』キーワードで定義します。引数ラベル・デフォルト引数・可変長引数など、柔軟な引数設定が可能です。
構文
// 基本的な関数定義
func 関数名(引数ラベル パラメータ名: 型) -> 戻り値の型 {
return 値
}
// 引数ラベルの省略(_ を使う)
func 関数名(_ パラメータ名: 型) -> 戻り値の型 { }
// デフォルト引数
func 関数名(パラメータ名: 型 = デフォルト値) { }
// 可変長引数
func 関数名(パラメータ名: 型...) { }
構文一覧
| 構文 | 概要 |
|---|---|
| func 名前() { } | 引数・戻り値なしの関数を定義します。 |
| func 名前(ラベル パラメータ: 型) { } | 引数ラベルとパラメータ名を別々に定義します。 |
| func 名前(_ パラメータ: 型) { } | _でラベルを省略し、呼び出し時にラベルなしで渡します。 |
| func 名前(パラメータ: 型 = 値) { } | デフォルト引数を指定します。省略可能になります。 |
| func 名前(パラメータ: 型...) { } | 可変長引数を定義します。配列として受け取ります。 |
| -> 型 | 戻り値の型を指定します。 |
| @discardableResult | 戻り値を無視してもコンパイラ警告を出さないようにします。 |
サンプルコード
// 基本的な関数
func greet(name: String) -> String {
return "こんにちは、\(name)さん!"
}
print(greet(name: "太郎"))
// 引数ラベルとパラメータ名を別々に定義
func move(from start: String, to end: String) {
print("\(start) から \(end) へ移動")
}
move(from: "東京", to: "大阪") // 呼び出しは引数ラベルを使う
// _ でラベルを省略
func multiply(_ a: Int, _ b: Int) -> Int {
return a * b
}
print(multiply(3, 4)) // ラベルなしで呼び出し
// デフォルト引数
func log(_ message: String, level: String = "INFO") {
print("[\(level)] \(message)")
}
log("起動しました") // [INFO] 起動しました
log("エラー発生", level: "ERROR") // [ERROR] エラー発生
// 可変長引数(配列として受け取る)
func sum(_ numbers: Int...) -> Int {
return numbers.reduce(0, +)
}
print(sum(1, 2, 3, 4, 5)) // 15
// 戻り値の省略(単一式)
func square(_ n: Int) -> Int { n * n } // returnを省略
print(square(7)) // 49
概要
Swiftの関数では引数ラベル(外向きの名前)とパラメータ名(内側で使う名前)を分けることができます。これにより「move(from: "A", to: "B")」のように英語として読みやすい呼び出しが実現できます。
単一式の関数では『return』キーワードを省略できます(Swift 5.1以降)。可変長引数(『...』)は1つの関数に1つしか定義できません。デフォルト引数は通常、引数リストの末尾に置きます。
inout引数や複数の戻り値についてはinout / 戻り値の型 / 複数の戻り値を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。