Project

General

Profile

Feature #12753

Updated by shyouhei (Shyouhei Urabe) almost 4 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