Minik notlar:
-
k ve j'yi for döngüleri içinde tanımlamanı öneririm.
-
delegate içinde bulunduğu kapsamı gösteren gösterge de barındırdığından normalde function'dan daha ağır bir olanak olarak kabul edilir.
Senin durumunda yalnızca birincisi function'a dönüştürülebiliyor çünkü diğer ikisi birinciyi kullanıyorlar. Dikkat edersen, bitMask bir işlev değil, bir temsilci nesnesi. Dolayısıyla diğer ikisi bu yerel nesneye eriştikleri için delegate olmak zorundalar:
ubyte function (uint) bitMask = (k) => cast(ubyte)1 << ((k % 16) >> 1);
bool delegate (uint) bitTest = (k) => (veri[k >> 4] & bitMask(k)) == 0;
void delegate (uint) bitSet = (k) { veri[k >> 4] |= bitMask(k); };
Sanırım normal işlev kullanırsan kod daha hafif hale gelir. (Her zaman olduğu gibi: Bunlar hep tahmin, ölçmeden emin olamayız.)
ubyte bitMask (uint k) { return cast(ubyte)1 << ((k % 16) >> 1); }
bool bitTest (uint k) { return (veri[k >> 4] & bitMask(k)) == 0; }
void bitSet (uint k) { veri[k >> 4] |= bitMask(k); }
- %d int içindir. Tam doğru olması için ya %u olmalı ya da en iyisi %s olarak bırakmalı.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]