From: pjb@... (Pascal J. Bourguignon) Date: 2009-01-29T09:32:39+09:00 Subject: Re: Bitwise question Rob Biedenharn writes: > On Jan 28, 2009, at 4:32 PM, Pascal J. Bourguignon wrote: > >> Andrew Barringer writes: >> >>> What's the best way to find out if user has access to all requested >>> permissions? >> >> (def check(permissions,bits) >> (bits . inject(true) { | r , b | >> (r and (0 != (permissions & (1 << b)))) >> }) >> end) >> nil > Or a simpler version: > > class Integer > def as_bits > ary = [] > (self.size*8).times {|i| ary.unshift(i) if self[i].nonzero?} > ary > end > > def check_permissions(*bits) > bits.all? {|bit| self[bit].nonzero? } > end > end Simplier? A class, two methods, a lot of operations, a lot of memory! -- __Pascal Bourguignon__