无法在Ruby中将一个类包含在另一个类中:未初始化的常量(NameError)

前端之家收集整理的这篇文章主要介绍了无法在Ruby中将一个类包含在另一个类中:未初始化的常量(NameError)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说我有三个类,每个定义在自己的文件中.例如ClassA.rb中的ClassA等
class ClassA
  def initialize
  end

  def printClassA
    puts "This is class A"
  end
end

class ClassB
  def initialize
  end

  def printClassB
    puts "This is class B"
  end
end

class ClassC

  def initialize
  end

  def bothClasses
    a = ClassA.new
    b = ClassB.new
    a.printClassA
    b.printClassB
  end
end

您可以看到,ClassC需要其他两个类才能正常运行.我假设需要一种方式来导入/包含/加载ClassC中的其他两个类.

我是Ruby的新手,我已经尝试过load / include / require的每个排列,我无法弄清楚如何使其运行.

我通常只是得到:

classc.rb:2:in `<class:ClassC>': uninitialized constant ClassC::ClassA (NameError)
    from classc.rb:1:in `<main>'

或者我的import / include / require语句的语法错误.

使用Windows 7,Ruby 1.9.2,RadRails,所有文件都在同一个项目和源文件夹中.

如果这个问题类似于这里的其他一些问题,我很抱歉,但解决“未初始化常数”的大多数答案是“只需要文件”.我已经尝试了,它不工作.

解决方法

我认为你的问题是$:,控制where需要查找文件的变量,不再包含Ruby 1.9.2及更高版本中的当前目录(出于安全考虑).要告诉Ruby在哪里查找文件,您需要执行以下操作之一:
require_relative 'ClassA' # which looks in the same directory as the file where the method is called

# or #

require './ClassA' # which looks in the current working directory

猜你在找的Ruby相关文章