寻找在Ruby中轻松实现类似File / IO的类的方法

时间:2012-02-13 19:41:54

标签: ruby file io

我想在Ruby(1.9)中实现类文件类,但不想重新实现或装饰StringIO和IO类提供的每个方法。我可以提供一个模块来帮助我吗?我想提供一个read()方法并获得readLines()方法(然后使用read())免费。

这与Comparable模块添加运算符<<===>=>的方式类似{{ 1}}已经实施。我为文件寻找类似的东西。

如果我没记错的话,Java和/或Apache Commons的工作方式如下:基本上只有一两种方法,其他所有方法都用它们进行读/写。

我正在为可写的File和StringIO对象实现一个包装器,它可以在每次写入时透明地更新SHA256摘要。

2 个答案:

答案 0 :(得分:2)

如果您不想从IO继承,那么您可能希望使用内核中的方法,尤其是opengets及其readline的实现或readlines

你丢弃了许多已经调试过的预先编写的代码。就个人而言,我会将IO子类化并将“读取”和“写入”类型的例程别名为某个安全名称,然后通过调用原始函数创建执行写入的新版本,然后更新SHA256。

答案 1 :(得分:2)

正如您已经说过要实现“包装类”,我建议使用Decorator Pattern

Ruby允许您通过多种方式实现它,它很简单,并且可以准确地提供您想要的内容:例如,如果使用method_missing实现模式,则只需实现摘要计算所需的写入方法。在实现中,将write委托给装饰对象,并使用写入的String更新SHA256 Digest实例。