みかづきの色々

デバイス(スマホからキャンプ用品まで)とかプログラミングとか中心のいろいろ試験的なブログ。

Rubyにはbool型がない?

いやー、実は以下のようなのを書きたくてハマったのですよ。

#/usr/bin/ruby

class Boolean
  def b2text
    r = "false"
    r = "true" if self == true
    r
  end
end

データが true か false かで、それぞれ "true" か "false" という文字列を返したいねそれだけ。

こういうのをやろうとしたら、TrueClassがどうのと言われ「あれ?Bool型の名前が違うのかな?と思ってクラス名をいじってみると、今度はFalseClassがどうのと言われる。
なにこれと調べてみると、正解はこうだった。

class TrueClass
  def bool2string
    r = "true"
    r
  end
end

class FalseClass
  def bool2string
    r = "false"
    r
  end
end

タイトルにはbool型としていますが、正しくは boolクラスがない、ですねこれは。

そも「true」は、TrueClassってクラスになっているらしい。falseもしかり。
で、「true」も「false」も、そのクラス唯一のメソッドになっていると。

へえええ、こりゃあびっくりした。そんな仕組みになってたんですねえ。
20世紀からRubyいじってたけど、想像もしてなかったよ。なんてこった orz