传递数据,从功能到另一个相同的类中

问题描述:

我有下面的类:传递数据,从功能到另一个相同的类中

class Foo 
    def [](*files) 
    end 

    def read(file) 
    end 
end 

,我想打电话给读这样的功能:

bar = Foo.new 
bar['todo.txt'].read 

有没有一种方法,使这个语法可能吗?

如果您希望能够以链的那些方法,我相信你将不得不从[]返回self

class Foo 
    attr_accessor :files 
    def [](*files) 
    @files = files 
    self 
    end 

    def read 
    p @files 
    end 
end 

使用实例变量在实例方法之间共享上下文。

class Foo 
    def [](*files) 
    @files = files 
    self 
    end 
    def read(file = nil) 
    if file 
     File.read(file) 
    else 
     @files.map{|file| File.read(file)}.join 
    end 
    end 
end