Juliaの分散関係のコードを読んでいたら、こんなコードを見つけて。
const REF_ID = Ref(1)
next_ref_id() = (id = REF_ID[]; REF_ID[] = id+1; id)
どうも、インクリメントしてユニークなIDを作っているらしい。Ref
というのは参照をとりだすもので、[]
という演算子はderefするものらしい。つまり、Cで書くと
static int counter = 1;
int * REF_ID = &counter;
int next_ref_id() {
int id = *REF_ID;
*REF_ID = id + 1;
return id;
}
みたいなことをやっているらしい。
うーん、こんなことできるのか。おそるべしJulia。