Этот код создает одну переменную записи (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()
+ строку формата + передачу каждое поле кортежа (или напишите для этой цели специальную c функцию), но было бы неплохо, если бы существовал какой-нибудь удобный способ достичь аналогичной цели ...