Project

General

Profile

Feature #12753

Updated by shyouhei (Shyouhei Urabe) about 2 years ago

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.

```ruby

```
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).

```ruby

```

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

Back