小编use*_*934的帖子

在Ruby中,如何将另一个目录中的文件指定为输入?

这可能有一个简单的答案,但我正在研究一个需要输入文件位于不同文件夹的测试套件.我想使用相对路径,如下所示:

@graph = Graph.new('../lib/test_input.txt')
Run Code Online (Sandbox Code Playgroud)

但Ruby并不喜欢这样.使用这样的相对文件路径的最佳方法是什么?

谢谢

ruby directory relative-path

2
推荐指数
1
解决办法
2449
查看次数

我可以从父类调用子类的私有方法吗?

在阅读了 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)

这是怎么回事?

ruby inheritance private subclass superclass

1
推荐指数
1
解决办法
465
查看次数