2010-01-01から1ヶ月間の記事一覧

shiftの罠

Array#shiftメソッドの仕様を気にせずに使っていたので、ハマった事を書きます。配列をshiftしていって、空配列になった時。配列aは全ての要素が取り出された時、a = nilになると思っていました。 しかし、shiftは配列の要素を取り出すメソッドなので配列自…

ブロック付きメソッドとyield制御構造

ブロック引数について書いた記事があったのですが、間違ってたのでその記事は消しました。 ごめんなさい。まずは、ブロックについて、勉強やり直します。 ブロック doからend 又は、{} で囲われた一連の式 class Each_test def initialize(a) @myarr = a end…

テンプレートメソッドパターン

基底クラス 共通の処理を実装する 派生クラス独自の処理をからのメソッドとして定義しておく 派生クラス 基底クラスの空メソッドをオーバーライドする ※上記2つのメソッドはprivateをかけて、外部に公開しないようにする

メソッドのアクセス制御

メソッドのアクセス制御を行う理由は、公開するオブジェクトを限定しカプセル化を堅牢にするため。アクセス制御することで以下の効果がある。 公開するメソッドを複数のメソッドから構成した時、呼び出し側が知らなくても呼び出し手順やオブジェクトの事前準…