Re: Next Version of Lua?
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: Next Version of Lua?
- From: Olivier Hamel <evilpineapple@...>
- Date: 2009年6月10日 05:41:25 -0400
Hans van der Meer wrote:
Yes, it is an array of bits, packed as tight as can be. Bits in the
array can be set, queried and iterated on. The testfile in the package
does a prime number sieve of Eratosthenes as an example, showing that
very many boolean flags can be manipulated comfortably.
Indeed, metamethods may be used for combining bitmaps with AND, OR, XOR.
The module cannot do arithmetic operations(like i<<1 or i>>1 for doing
powers of two). It was not designed as such and I agree with the quote
of Roberto in that one should not lightly tamper with arithmetics.
Hans van der Meer
In all respect, I beg to differ. Quite a few algorithms could be
significantly improved/facilitated/made implementable with such direct
bitwise ops, though I agree that adding << and >> just for performing
powers of two is indeed a waste, but I'd only used those as an example.
Your implementation seems to handle bitflags well, which is the main
reason (for me at least, that + some algorithms) I'm hoping for bitwise
ops. But I'd think it'd be more overhead/bother to do (sorry don't have
the ref sheet with me ATM so please bear as I use the incorrect
constructs/method calls):
local WASDActive = bitmap.Create(FLAG_KEYBOARD_W, FLAG_KEYBOARD_A,
FLAG_KEYBOARD_S, FLAG_KEYBOARD_D)
ExplodePlayerIfWASDIsPressed(WASDActive:GetValue())
Instead of:
ExplodePlayerIfWASDIsPressed(FLAG_KEYBOARD_W | FLAG_KEYBOARD_A |
FLAG_KEYBOARD_S | FLAG_KEYBOARD_D)
Adding your object as a core type might be a solution, but then that
adds a kludge to Lua's otherwise (near-?)perfect type universe.