将文件或频道保存在 class 中的良好做法
Good practice to hold a file or channel in a class
在下面的代码中,我试图制作一个 class 可以在通过方法询问时将内容写入日志文件。在这里,我想知道这是否是用于此目的的惯用方法,或者是否有更推荐的方法,例如,保留 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" );
}
我相信你在这里做的是合理的。 Chapel 中文件和通道之间的区别主要是为了支持语言的并行计算主题,以便支持多个任务使用不同的通道(本质上是文件视图)同时访问单个逻辑文件。在像您这样的情况下,您创建的频道下有一个文件,但如果您不需要与其进一步交互,则无需显式存储它。
所以我相信像你这里那样简单地存储一个频道没有实际问题。
在下面的代码中,我试图制作一个 class 可以在通过方法询问时将内容写入日志文件。在这里,我想知道这是否是用于此目的的惯用方法,或者是否有更推荐的方法,例如,保留 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" );
}
我相信你在这里做的是合理的。 Chapel 中文件和通道之间的区别主要是为了支持语言的并行计算主题,以便支持多个任务使用不同的通道(本质上是文件视图)同时访问单个逻辑文件。在像您这样的情况下,您创建的频道下有一个文件,但如果您不需要与其进一步交互,则无需显式存储它。
所以我相信像你这里那样简单地存储一个频道没有实际问题。