関数

Swiftにおける「関数(Function)」は、ある処理をまとめて再利用可能にするためのコードの単位です。Swiftの関数は、関数名、引数、戻り値、処理ブロックから構成され、柔軟で強力な記述が可能です。


1. 基本構文

swift
func 関数名(引数名: 型, ...) -> 戻り値の型 { // 処理 return 戻り値 }

swift
func greet(name: String) -> String { return "Hello, \(name)!" }

この関数 greet は、name という文字列を引数に取り、それを使ってあいさつ文を返します。


2. 戻り値がない関数

戻り値を持たない場合は、-> Void または -> () を省略可能です。

swift
func sayHello() { print("Hello!") }

3. 引数と外部引数名

Swiftでは引数に**外部引数名(外部ラベル)**を指定することで、関数呼び出し時の可読性を高めることができます。

swift
func multiply(number1 a: Int, number2 b: Int) -> Int { return a * b } let result = multiply(number1: 3, number2: 5)

number1number2 が外部引数名で、ab が関数内部で使われる変数名です。


4. デフォルト引数

関数の引数にはデフォルト値を設定できます。

swift
func greet(name: String = "Guest") { print("Hello, \(name)!") } greet() // "Hello, Guest!" greet(name: "Bob") // "Hello, Bob!"

5. 可変長引数(Variadic Parameters)

複数の引数を1つの配列として受け取ることも可能です。

swift
func sum(numbers: Int...) -> Int { return numbers.reduce(0, +) } sum(numbers: 1, 2, 3, 4) // 結果: 10

6. 引数の変更(inout)

関数内で引数の値を変更したい場合は inout を使います。

swift
func swapValues(a: inout Int, b: inout Int) { let temp = a a = b b = temp } var x = 10 var y = 20 swapValues(a: &x, b: &y) // xは20, yは10に変わる

7. 関数型(関数を変数として扱う)

関数は変数に代入したり、他の関数に引数として渡したりできます。

swift
func add(a: Int, b: Int) -> Int { return a + b } let operation: (Int, Int) -> Int = add let result = operation(3, 5) // 8

8. ネスト関数(関数の中に関数)

関数内に別の関数を定義することもできます。

swift
func outerFunction() { func innerFunction() { print("Inner function") } innerFunction() }

まとめ

Swiftの関数は以下の特徴を持ち、柔軟なプログラミングを実現します。

  • 名前付き・無名(クロージャ)で定義可能

  • 戻り値あり/なし

  • デフォルト引数や可変長引数のサポート

  • 関数型として扱える

  • inout による引数の書き換えが可能

関数はSwiftのコードを整理し、再利用性を高めるための基本的な構造です。

生成日:2025/05/04