2008-12-10から1日間の記事一覧

なぜコンストラクタは多段ロケットみたいなの?

Rubyではオブジェクトをインスタンス化するのにnewメソッドを使う。でも実際にはinitializeというメソッドが呼ばれる。なんでこの2つが一致していないのか、どうも分からない。str=String.intialize("hello")とかでいいんじゃないの?The Ruby Wayにはちょっ…

クラスのfreeze

オブジェクトはObject#freezeメソッドで凍結できるというじゃないか。 str = "hey" str.freeze str.upcase! # TypeError: can't modify frozen string ということはClassオブジェクトもかしらと思ってやってみた。 String.freeze class String # TypeError: …

injectの練習問題

与えられた単語のリストから、もっとも多く母音が含まれる単語を返す。というのは、injectを使う例として恣意的に考え付いた練習問題だけど。ついでにString#scanも使ってみたかった。 class String def number_of_vowels scan(/[aiueo]/).size end alias si…

クラスメソッド練習問題

クラスメソッドの練習問題。アルコールの分解速度はその人がもつ酵素の構成で遺伝的に決まっており、二日酔いにならない飲酒量というのは人それぞれで決まっている。問題は、世の中にはいろんな種類のお酒があって、いわゆる「チャンポン」な飲み方をすると…