Project

General

Profile

Feature #12753

Useful operator to check bit-flag is true or false

Added by tagomoris (Satoshi TAGOMORI) about 4 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Target version:
[ruby-core:77251]

Description

Ruby's 0 is truthy value. It's useful for many cases, but it's confusing and I made many bugs when I'm writing code to handle binary data, because my thought is almost same with one to write C code in such situation.

n = get_integer_value
if n & 0b10100000
  # code for the case when flag is true
else
  # never comes here :(
end

IMO it's very useful to have methods for such use-cases, like #and? and #xor? (#or? looks not so useful... I can't imagine the use case of this operator, but it's better to have for consistency).

n = get_integer_value
case
when n.and?(0b10000000)
  # negative signed char
when n.and?(0b01110000)
  # large positive
else
  # small positive
end

Also available in: Atom PDF