«Смотреть» длинный массив из Julia REPL?

#debugging #julia #watch

#отладка #джулия #Смотреть

Вопрос:

Предположим, у меня длинный массив.

 > using MakieGallery
> size(database)
(210,)
 

Если я сделаю

 > [d.title for d=database]
 

он напечатает его усеченным, и если я show это сделаю, он напечатает его в беспорядке:

 > show([d.title for d=database])
 

Я не знаю как, но, вероятно, я мог бы печатать значения в столбце, и это прокручивало бы мою консоль далеко вверх.

Все это плохо. Возможно ли выполнить какое-то простое «наблюдение» за переменной? Т.е. Открыть какой-нибудь небольшой виджет в отдельном окне с элементом управления списком, отображающим массив, который я мог бы прокручивать по мере необходимости?

Ответ №1:

Внутренне Julia использует Base.show для отображения значений в REPL, вы можете просто расширить эту функцию любым удобным вам способом (этот пример — просто очень простая реализация для печати каждого элемента массива в новой строке, и вам, вероятно, не следует ее использовать):

 Base.show(io::IO, ::MIME"text/plain", x::Array) = x .|> println
 

Затем вы можете продолжить и добавить свою функцию .julia/config/startup.jl , чтобы загружать ее каждый раз при запуске REPL. Просто убедитесь, что у вас действительно надежная реализация для обработки различных крайних случаев, когда она может работать неправильно.

Ответ №2:

Плутон.в jl есть очень хороший просмотрщик табличных данных (включая массивы). Он усекает вывод по умолчанию, но предлагает кнопку, чтобы показать больше.

Кроме того, представление автоматически обновляется при изменении данных в другой ячейке.