2016-07-27 9 views
-1

私はRubyの対話型シェル(irbと同じ)を別の言語で書いています。私はモジュールに関するシェル(すなわち、読み込み入力と解析)に関するすべての関数を記述し、次にclass Object; include Shell; endを実行することを考えました。モジュールを含むオブジェクトを開く

私の読んだところではの顕微鏡からのRuby(私が使っているもの)を学びました。モジュールを組み込むと、このモジュールのコピーが作成され、それを含むクラスのスーパークラスなので、少しメモリが無駄になるようですが、AFAIKがオブジェクトに含まれているカーネルモジュールを調べましたが、これは問題ありません。

最後に、にShellを含めるとよいでしょうか? Objectがデフォルトスコープであるため、class Object; include Shell; end

を実行している

答えて

0

は、ちょうどinclude Shellと同じです。

これはメモリにとって悪くないですが、これはかなり基本的な動作です。

あなたはObject(グローバル)スコープに取り組んで回避したい場合、あなたはShellを含むカスタムモジュールを定義することができます。

class App 
    include Shell 
    def self.begin 
    # do something with shell 
    end 
end 
App.begin 

あなたはREPLを作っていると、上のあなたの方法が利用可能たくない場合けれどもグローバルな範囲は、ラッパークラスなしでinclude Shellと言って良いアプローチのようです。

関連する問題