この種のコードを考えてみましょう:
Function<int,int> someFunc=(x)=>{
//SomeCalc
return y;
}
関数をそのように使用したいよりも:
int result;
if(someFunc(k)!=0)
{
result=someFunc(k);
}
問題は、コンパイラが関数の結果をキャッシュして、1 回だけ計算されるようにするかどうかです。それとも2回計算されますか?答えをグーグルで検索しようとしましたが、うまくいきませんでした。
クロージャのキャッシュについてはどうでしょうか。