将数据从函数传递到同一类中的另一个

时间:2013-06-28 23:30:55

标签: ruby

我有以下课程:

class Foo
  def [](*files)
  end

  def read(file)
  end
end

我想把这个函数称为:

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

有没有办法让这种语法成为可能?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

如果您希望能够将这些方法链接起来,我相信您必须从self返回[]

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

  def read
    p @files
  end
end