Ruby 不同文件中的嵌套类具有继承性
因此,我制作了一个程序,其中一个类包含多个类,但我认为将其拆分为多个程序会更有组织性,每个子类对应一个程序。这是一种更好的组织代码的方法吗?这会影响性能吗 我该如何将代码拆分成两个文件?主程序将有Texty类,我需要从另一个文件中包含String类,但是您不能在Ruby中包含类,那么如何在保持Texty继承的同时做到这一点呢?我如何从另一个文件访问实例变量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
@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中的实例变量吗?(来自字符串)