Ruby 不同文件中的嵌套类具有继承性

Ruby 不同文件中的嵌套类具有继承性,ruby,class,inheritance,inner-classes,instance-variables,Ruby,Class,Inheritance,Inner Classes,Instance Variables,因此,我制作了一个程序,其中一个类包含多个类,但我认为将其拆分为多个程序会更有组织性,每个子类对应一个程序。这是一种更好的组织代码的方法吗?这会影响性能吗 我该如何将代码拆分成两个文件?主程序将有Texty类,我需要从另一个文件中包含String类,但是您不能在Ruby中包含类,那么如何在保持Texty继承的同时做到这一点呢?我如何从另一个文件访问实例变量@inst_var class Texty def initialize @inst_var = 0 end def te

因此,我制作了一个程序,其中一个类包含多个类,但我认为将其拆分为多个程序会更有组织性,每个子类对应一个程序。这是一种更好的组织代码的方法吗?这会影响性能吗

我该如何将代码拆分成两个文件?主程序将有Texty类,我需要从另一个文件中包含String类,但是您不能在Ruby中包含类,那么如何在保持Texty继承的同时做到这一点呢?我如何从另一个文件访问实例变量
@inst_var

class Texty
  def initialize
    @inst_var = 0
  end
  def texty_method
    puts 'Bar'
  end
  class String < Texty
    def output(string)
      puts string
    end
  end
end

Texty::String.new.output('Foo')
class Texty
def初始化
@仪器变量=0
结束
def texty_方法
“酒吧”
结束
类字符串
将代码拆分为多个文件和对象将对性能产生影响,但影响很小,您甚至不会注意到

如果要按类划分程序,我的建议是使用rails命名约定

TestClass
->
test\u class.rb


然后在主程序的顶部执行:
require\u relative'test\u class.rb'

尝试像这样拆分文件,看看会发生什么

texty/texty.rb
中:

class Texty
  def initialize(x)
    @x = x
  end
end
require_relative 'texty.rb'

class Texty
  class String < Texty
    def test
      puts @x
    end
  end
end
texty/string.rb
中:

class Texty
  def initialize(x)
    @x = x
  end
end
require_relative 'texty.rb'

class Texty
  class String < Texty
    def test
      puts @x
    end
  end
end

它应该打印
1
,表明您的
Texty::String
类继承了
@x
ivar的初始化,它是从它的父类
Texty

嵌套类继承的,这样做不会在Texty和String之间创建任何类型的关系。您可以将String类(我会为它选择另一个名称)拉入它自己的文件中,在声明之前要求Texty,并维护您现在得到的相同结果。。。不完全一样,因为您将引用Texty名称空间之外的字符串,但我认为您已经了解了情况。我仍然能够以这种方式访问Texty中的实例变量吗?(来自字符串)