此代码创建一个记录变量 ( r) 和一个元组变量 ( t),其中包含多个数组并将它们打印到标准输出:
const N = 5;
record Myrec {
var a: [1..N] int = (for i in 1..N do i);
var b: [1..N] int = (for i in 1..N do i);
var c: [1..N] int = (for i in 1..N do i);
}
proc test() {
var r: Myrec;
var t = (r.a, r.b, r.c);
writeln( "r = ", r );
writeln( "t = ", t );
}
test();
如果我运行这段代码,我会得到这个输出:
r = (a = 1 2 3 4 5, b = 1 2 3 4 5, c = 1 2 3 4 5)
t = (1 2 3 4 5, 1 2 3 4 5, 1 2 3 4 5)
但我觉得输出不是很可读(特别是在 的情况下t)。所以,我想知道是否有某种方法可以用方括号打印这些变量,例如,如下所示?
t = ([1 2 3 4 5], [1 2 3 4 5], [1 2 3 4 5])
我认为可以通过使用writef()+格式字符串+传递元组的每个字段(或为此目的编写特定函数)来实现,但如果有一些方便的方法来实现类似的目标会很好......