-
Notifications
You must be signed in to change notification settings - Fork 0
Таблица
Viktor edited this page Jan 21, 2015
·
2 revisions
Данное представление более всего подходит в случае, когда отладочная информация предствляет из себя плоский список.
Для примера выведем информацию о файлах в текущем каталоге
// подключим нужные пакеты
import "package:dlog/dlog.dart" as dlog;
import "dart:io";
// функция чтения чекущего каталога
List ls() =>
new Directory(".").listSync();
main() {
// создаем объект табличного представления данных
// в конструкторе обязательно указываем количество колонок
var debug = new dlog.Table(3); // порядковый номер, тип и путь
// получаем содержимое текущей директории
List items = ls();
for (int i = 0; i < items.length; i++) {
// порядковый номер
debug.data.add(i + 1);
// определяем тип
String type = items[i] is Directory ? "d" : "f";
// тип и путь
debug.data.addAll([type, items[i].path]);
// количество данных должно соответствовать количеству
// колонок указанных в конструкторе
}
// вывод в консоль
print(debug);
}
Результат
┌───┬───┬─────────────┐
│ 1 │ f │ ./main.dart │
├───┼───┼─────────────┤
│ 2 │ d │ ./packages │
└───┴───┴─────────────┘
Названия колонок в таблице в принципе не нужны. Можно сразу же после создания таблицы первой строкой добавить строку с заголовками. Но в таблице есть возможность вырезать небольшую часть строк и в этом случае заголовки могут не попасть в эту часть. Тогда нужно объявлять заголовки явно.
Пример использования явных заголовков
import "package:dlog/dlog.dart" as dlog;
import "dart:math" as Math;
main() {
// создадим таблицу из набора колонок
// в этом случае указывать кол-во колонок не нужно
var debug = new dlog.Table.fromHeader(["Угол"]);
// добавляем еще...
debug.columns.addAll(["Радиан", "Вектор"]);
for (int angle = 0; angle < 360; angle++) {
double rad = angle * (Math.PI/180),
x = 1 * Math.sin(rad),
y = 1 * Math.cos(rad);
debug.data.addAll([angle, rad, "$x, $y"]);
}
// вырезаем часть таблицы: 10 строк, начиная с 310 строки
debug.crop(310, 10);
print(debug);
}
Результат
┌──────┬───────────────────┬─────────────────────────────────────────┐
│ УГОЛ │ РАДИАН │ ВЕКТОР │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 310 │ 5.410520681182422 │ -0.7660444431189781, 0.6427876096865393 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 311 │ 5.427973973702365 │ -0.7547095802227722, 0.656059028990507 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 312 │ 5.445427266222308 │ -0.7431448254773946, 0.6691306063588578 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 313 │ 5.462880558742252 │ -0.7313537016191703, 0.6819983600624986 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 314 │ 5.480333851262195 │ -0.7193398003386512, 0.6946583704589973 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 315 │ 5.497787143782138 │ -0.7071067811865477, 0.7071067811865474 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 316 │ 5.515240436302081 │ -0.6946583704589976, 0.7193398003386509 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 317 │ 5.532693728822025 │ -0.6819983600624983, 0.7313537016191707 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 318 │ 5.550147021341968 │ -0.6691306063588581, 0.7431448254773942 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 319 │ 5.567600313861911 │ -0.6560590289905074, 0.7547095802227719 │
└──────┴───────────────────┴─────────────────────────────────────────┘