不可避的なオブジェクト指向言語では、変更可能または不変クロージャを持つ方が理にかなっていますか?例えば変更可能または不変クロージャ
:閉鎖が可変である場合
int i=5;
function() f={print(i);};
f();
i=6;
f();
、これは印刷になります。
5
6
それが不変であれば、それは印刷になります。
5
5
を私がいることを実感不変のクロージャでも、これを行うことができます:
class I {int i;}
I i=new I();
i.i=5;
function() f={
I j=i;
print(j.i);
};
f();
i.i=6;
f();
したがって、変更可能な、または不変のクロージャを使用する方が良いでしょうか、または両方にオプションがありますか?不変のクロージャーは実装が容易であるように見えるので、この時点では、そうしないとよい理由がない限り、私はそれと一緒に行くつもりだと思う。
可変/不変クロージャの用語は少なくともあいまいであり、クロージャ自身を参照する変数が可変/不変であることも意味します。 –