2012-04-24 15 views
1

私はRubyファイルを持っていなければなりません:一つは統計計算のためのいくつかのメソッドを含むモジュールを含み、もう一つのファイルはモジュールのメソッドの一つを呼び出したいものです。 Rubyでどうすればいいですか?他のルビファイルのモジュールからメソッドを呼び出す方法

これは正しい方法ですか?

require 'name of the file with the module' 

a=[1,2,3,4] 
a.method1 

答えて

3

ファイルがRubyのロードパスのいずれかにある場合を除き、ファイルの絶対パスが必要です。 puts $:を使用すると、デフォルトのロードパスを表示できます。これは、ファイルをロードするために、次のいずれかを実行するのが一般的である:ロードパスにメインファイルのディレクトリを追加し、その後で相対パスを使用

が必要ですつだけをロード

$: << File.dirname(__FILE__) 
require "my_module" 

のRuby 1.8のコードをファイルには、多くの場合のようなワンライナーが含まれます:

require File.expand_path("../my_module", __FILE__) 

Ruby 1.9の追加require_relative:

require_relative "my_module" 
あなたはクラスメソッドとしてメソッドを定義する必要があり、またはモジュール#のmodule_functionを使用するモジュールでは

:あなたのモジュールファイルが必要検索パスにある場合

module MyModule 
    def self.method1 ary 
    ... 
    end 

    def method2 
    ... 
    end 
    module_function :method2 
end 

a = [1,2,3,4] 
MyModule.method1(a) 
1

あなたの方法は正しいです。

あなたのモジュールは、オブジェクト自体が使用する方法を提供する場合、あなたが行う必要があります。

require 'name of the file with the module' 

a=[1,2,3,4] 
a.extend MyModule # here "a" can use the methods of MyModule 
a.method1 

Object#extendを参照してください。それ以外の場合は

、あなたが使用します、モジュールによって直接メソッドを使用します場合:

MyModule.method1(a) 
関連する問題