3

我在某个文件夹中有两个 ruby​​ 文件,分别是 A 和 B。

A类代码如下:

class A
  def self.foo
    puts "foo"
  end
end

A.foo

B类代码如下:

class B
  def self.bar
    puts "bar"   
  end
end

B.bar
A.foo

当我尝试运行 B 类文件时,出现以下错误:

bar
b.rb:10:in `<main>': uninitialized constant A (NameError)

我不想使用模块。那么,如何从 B 类引用 A.foo 呢?

4

1 回答 1

2

我不知道这是否回答了您的问题,因为我不完全理解您的意图。

您知道,您的b.rb脚本不知道来自 的 A 类a.rb,因此出现了错误。有几种方法可以告诉b.rb使用a.rb.

  1. 您可以添加到文件中b.rb

    require 'a'
    
  2. 你可以像这样运行 b.rb 脚本:

    ruby -r a.rb b.rb
    

一个旁注。在这两种情况下,代码a.rb

    A.foo

也被执行。您可以使该代码仅在a.rb直接运行时才可运行,方法是包含要运行的代码:

    if __FILE__ == $0
      # code to run when a.rb is executed directly
      A.foo
    end
于 2012-04-09T11:04:58.170 回答