前田@大阪大学です。

Yoshiki WADA <wada / wombat.or.jp> wrote:

>組み込み関数と同じ名前のクラスメソッドをつくり、
>そのメソッド内から同名の組み込み関数を呼び出すには
>どうすればいいのですか。
>
>下のようなクラスを作ってクラスメソッドgetsを呼び出すと、
>自分自身を呼び出し続けてしまいます。

クラスメソッドじゃなくてインスタンスメソッドですよね?

>class MyClass
>  def gets
>    gets    # <-- ここで組み込みのgetsを呼び出したい。
>  end
>end

この場合はsuperを使えばよいのではないでしょうか。

class MyClass
  def gets
    super
  end
end

# スーパークラスでgetsが再定義されてると、そちらが呼ばれてしまいますが。
# モジュール関数のようにKernel.getsとできると便利かもしれませんね。

--
前田 修吾 (mailto:shugo / aianet.ne.jp)