这可能有一个简单的答案,但我正在研究一个需要输入文件位于不同文件夹的测试套件.我想使用相对路径,如下所示:
@graph = Graph.new('../lib/test_input.txt')
Run Code Online (Sandbox Code Playgroud)
但Ruby并不喜欢这样.使用这样的相对文件路径的最佳方法是什么?
谢谢
在阅读了 Ruby 的访问控制之后,我了解到私有方法只能从类内部以及该类的子类中隐式调用。不过,我有一个例子,其中一个类似乎default_chain在其子类上调用私有方法,并且它仍然有效。查看以下代码(改编自 Sandi Metz 的实用 Ruby 面向对象设计):
class Bicycle
attr_reader :chain
def initialize(args={})
@chain = args[:chain] || default_chain
end
def parts
{
chain: chain
}
end
end
class RoadBike < Bicycle
def parts
super.merge(
handlebar_tape_color: "red"
)
end
private
def default_chain
"21-speed"
end
end
class MountainBike < Bicycle
def parts
super.merge(
suspension: "Manitou Mezzer Pro"
)
end
private
def default_chain
"10-speed"
end
end
RoadBike.new.parts # {:chain=>"21-speed", :handlebar_tape_color=>"red"}
MountainBike.new.parts # {:chain=>"10-speed", :suspension=>"Manitou Mezzer Pro"}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?