佐藤と申します。

クラスAのinitializeで、インスタンス変数@fooを初期化する
のに少し処理が必要なので、同じクラスAのインスタンスメソ
ッドとして定義しました。

class A
  def initialize
    @foo = init_foo()
  end
  attr_reader('foo')

  def init_foo
    ...
  end
  private :init_foo
end

後ほど、このクラスAのインスタンスaを作ると、a.fooがちゃ
んと値を返します。

この場合、init_fooは、

(1) initializeの中で@fooの初期化時に呼ばれて実行されてい
る、
(2) a.fooが呼ばれたときに実行される、

のどちらでしょうか? あるいは、まったく別でしょうか?

Java(の知識もあいまいですが)では、init_fooはインスタンス
メソッドであり、クラスAのコンストラクタ中では呼べないと
思いました。

所望の動作をしているので、とりあえずOKなんですが、ちょっ
と気持ち悪くて。

よろしくお願いします。

--
Makoto Satoh