私はRubyファイルを持っていなければなりません:一つは統計計算のためのいくつかのメソッドを含むモジュールを含み、もう一つのファイルはモジュールのメソッドの一つを呼び出したいものです。 Rubyでどうすればいいですか?他のルビファイルのモジュールからメソッドを呼び出す方法
これは正しい方法ですか?
require 'name of the file with the module'
a=[1,2,3,4]
a.method1
私はRubyファイルを持っていなければなりません:一つは統計計算のためのいくつかのメソッドを含むモジュールを含み、もう一つのファイルはモジュールのメソッドの一つを呼び出したいものです。 Rubyでどうすればいいですか?他のルビファイルのモジュールからメソッドを呼び出す方法
これは正しい方法ですか?
require 'name of the file with the module'
a=[1,2,3,4]
a.method1
ファイルが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)
あなたの方法は正しいです。
あなたのモジュールは、オブジェクト自体が使用する方法を提供する場合、あなたが行う必要があります。
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)