簡単な例を次に示します。
def abc
puts 'abc'
end
class Foo
def self.bar
abc
end
end
Foo.bar
abc
は内部で定義されていないため、これは壊れFoo.bar
ます。上記の作業を行うためにローカルバインディングを「継承」するようにクラスに指示する方法はありますか? 基本的に、「バー」メソッド用の単純な名前空間を作成しようとしています。
私の最初の試みは、現在の固有クラス ( class Foo < (class << self; self; end)
) からサブクラス化することでしたが、仮想クラスをサブクラス化することはできません。また、バインディングを明示的に渡して内部で eval を使用することもできますが、それは私が探しているものではありません。