🐙

副作用をともなう関数とは。(Swiftのサンプルコードあり)

2023/05/16に公開

副作用を伴う関数に関して、Swiftでのサンプルがなかったので、作成した。
今回の記事はほんの一例である。

プログラミングにおける副作用とは

ある機能や処理がコンピュータの論理的な状態を変化させ、それ以降の結果に影響を与えることを指します。
副作用は主に変数への代入や外部の状態へのアクセスや変更などによって引き起こされます。

サンプルコード

例えば、以下のSwiftのコードを考えてみましょう。

var x = 1

func addToX(value: Int) -> Int {
    x += value
    return x
}

let result = addToX(value: 3)
print(result) // 結果: 4

説明

上記のコードでは、addToXという関数があります。この関数は引数で受け取った値を変数xに加算し、その結果を返します。この関数によって変数xの値が変化し、それ以降の結果に影響を与えています。

この場合、関数addToXの副作用は以下のように説明できます。

「本来の作用」: 引数で受け取った値を変数xに加算し、その結果を返す。
「想定外の作用」: 変数xの値を変更する。
「状態」: 変数xの値

関数addToXは副作用を持つ不純な関数であり、同じ入力に対して常に同じ結果を返さないため、予測可能性やテスト容易性が低下します。副作用が予期せぬバグや予期しない結果を引き起こす可能性があるため、プログラミングにおいては副作用を最小限に抑えることが推奨されます。

上記の例では、変数xの値の変化は関数addToX内に限定されますが、大規模なプログラムでは異なるスコープやモジュール間での影響を考慮する必要があります。

参考

https://boukenki.info/programming-hukusayou-imi/#i

Discussion