我有以下课程:
class Foo
def [](*files)
end
def read(file)
end
end
我想这样调用函数:
bar = Foo.new
bar['todo.txt'].read
有没有办法使这种语法成为可能?
我有以下课程:
class Foo
def [](*files)
end
def read(file)
end
end
我想这样调用函数:
bar = Foo.new
bar['todo.txt'].read
有没有办法使这种语法成为可能?
If you want to be able to chain those methods, I believe you will have to return self
from []
.
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