メインコンテンツまでスキップ

「MacOS」タグの記事が1件件あります

全てのタグを見る

· 約10分
arasan01

こんちには,@arasan01です。Twitterで流れてくるポケモンのマンガがどれも良すぎて毎日つらいです,早くポケモンと暮らしたい。

今回は関数に対する実装と抽象の分離について考察します。

実装と抽象の分離を考えます,以下のような対応を考えると関数も抽象を捉えられそうです。

実装抽象
構造体・クラスプロトコル
関数?

純粋関数の場合は明確に実装と抽象が分離できます。下記の通常の関数の定義では実装はビルド時に決定されますが,分離した場合には実行時まで実装の選択が遅延されます。そのため依存性の注入が実行時に可能です。

// 通常の関数の定義
func add(first: Int, second: Int) -> Int {
first + second
}

// 分離した場合の定義
let impl: (Int, Int) -> Int = { first, second in first + second }
func add(first: Int, second: Int) -> Int {
impl(first, second)
}