在班级中保存文件或频道的良好做法

时间:2019-02-27 19:24:51

标签: file logging chapel

在下面的代码中,我试图创建一个类,当通过方法询问时,该类可以将某些内容写入日志文件。在这里,我想知道这是否是惯用的方式,或者是否有更推荐的方式,例如,保留file类型的单独字段(出于某种原因)?换句话说,即使我仅持有channel类型,它通常也没有问题吗?

class Myclass {
    var logfile: channel;

    proc init() {
        writeln( "creating log.out" );
        logfile = openwriter( "log.out" );
    }
    proc log( x ) {
        logfile.writeln( x );
    }
}

proc main() {
    var a = new borrowed Myclass();
    a.log( 10 );
    a.log( "orange" );
}

1 个答案:

答案 0 :(得分:2)

我相信您在这里所做的事情是合理的。在Chapel中,文件和通道之间的区别主要是为了支持该语言的并行计算主题,以便支持使多个任务使用不同的通道(本质上是对文件的视图)同时访问单个逻辑文件。在像您这样的情况下,您创建的频道下面有一个文件,但是如果您不需要进一步与之交互,则无需显式存储它。

因此,我认为像在此处那样简单地存储频道并没有实际问题。