内容
ビット演算を利用すると 1 つの整数値で複数の属性を表現できて便利です
# 整数を 2 進数の文字列に変換するメソッドを定義する。
using (Module.new do
refine Integer do
def to_binary_string(digits = 4)
to_s(2).then { "%0#{digits}d" % _1 }
end
end
end)
高血圧 = 1
高血糖 = 2
高コレステロール = 4
高尿酸 = 8
高血圧.to_binary_string
#=> "0001"
高血糖.to_binary_string
#=> "0010"
高コレステロール.to_binary_string
#=> "0100"
高尿酸.to_binary_string
#=> "1000"
太郎 = 2
太郎.to_binary_string
#=> "0010"
太郎.anybits?(高血圧)
#=> false
太郎.anybits?(高血糖)
#=> true
太郎.anybits?(高コレステロール)
#=> false
太郎.anybits?(高尿酸)
#=> false
二郎 = 11
二郎.to_binary_string
#=> "1011"
二郎.anybits?(高血圧)
#=> true
二郎.anybits?(高血糖)
#=> true
二郎.anybits?(高コレステロール)
#=> false
二郎.anybits?(高尿酸)
#=> true