3

Rubyファイルを使用する必要があります。1つには統計計算用のメソッドを含むモジュールが含まれ、もう1つのファイルにはモジュール内のメソッドの1つを呼び出します。Rubyでそれを行うにはどうすればよいですか?

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

require 'name of the file with the module'

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

2 に答える 2

7

ファイルが Ruby のロード パスのいずれかに配置されていない限り、Require はファイルへの絶対パスを必要とします。でデフォルトのロード パスを表示できますputs $:。ファイルをロードするには、次のいずれかを実行するのが一般的です。

メイン ファイルのディレクトリをロード パスに追加し、require で相対パスを使用します。

$: << 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#module_function を使用する必要があります。

module MyModule
  def self.method1 ary
    ...
  end

  def method2
    ...
  end
  module_function :method2
end

a = [1,2,3,4]
MyModule.method1(a)
于 2012-04-24T18:00:18.397 に答える
2

モジュールファイルが必要な検索パスにある場合、あなたのやり方は正しいです。

モジュールがオブジェクト自体によって使用されるメソッドを提供する場合は、次のことを行う必要があります。

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)
于 2012-04-24T18:24:55.780 に答える