2018-06-02

GetHoge(dbConnection, key), GetFuga(dbConnection, key, key2)

という関数があったとき

dbConnection引数を渡さずにその場でDB接続する版の関数 GetHoge(key), GetFuga(key, key2)

を作りたい

DataTable GetHoge(key) {

var c = CreateDbConnection);

return GetHoge(c, key);

}

DataTable GetFuga(key, key2) {

var c = CreateDbConnection);

return GetFuga(c, key, key2);

}

これでは関数の数だけ同じものを作らねばならないので煩雑である

もっと巧く書く方法はないか

ES2015であれば、

function OpenConnectionAndRun(runFunc, ...args) {

var c = CreateDbConnection);

return runFunc(c, ...args);

}

という関数を1つ用意すればそれで済む。

関数型言語でもカリー化や部分適用を使って似た感じのコードが書けると思う。

C#ではそういった方法はないのか?

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん