Интерактивные утилиты
Этот модуль предназначен для интерактивной работы. Он загружается автоматически в интерактивном режиме.
Base.Docs.aproposФункция
apropos([io::IO=stdout], pattern::Union{AbstractString,Regex})
Поиск доступных строк документации для записей, содержащих pattern.
Если pattern является строкой, регистр игнорируется. Результаты выводятся в io.
apropos можно вызвать из режима справки в REPL, заключив запрос в двойные кавычки:
help?> "pattern"
InteractiveUtils.varinfoФункция
varinfo(m::Module=Main, pattern::Regex=r""; all::Bool = false, imported::Bool = false, sortby::Symbol = :name, minsize::Int = 0)
Возвращает таблицу Markdown, предоставляющую информацию о глобальных переменных, экспортированных в модуль, необязательно ограниченные теми, которые соответствуют pattern.
Оценка потребления памяти является приближенным нижним пределом размера внутренней структуры объекта.
-
all: также отображает неэкспортированные объекты, определенные в модуле, устаревшие объекты и объекты, сгенерированные компилятором. -
imported: также отображает объекты, явно импортированные из других модулей. -
recursive: рекурсивно включает объекты в подмодулях, соблюдая те же настройки в каждом. -
sortby: столбец для сортировки результатов. Доступные варианты::name(по умолчанию),:size, и:summary. -
minsize: включает только объекты с размером не менееminsizeбайт. По умолчанию0.
InteractiveUtils.versioninfoФункция
versioninfo(io::IO=stdout; verbose::Bool=false)
Выводит информацию о версии используемой Julia. Вывод контролируется булевыми ключевыми аргументами:
-
verbose: вывести всю дополнительную информацию
Вывод этой функции может содержать конфиденциальную информацию. Перед публикацией результата, пожалуйста, проверьте вывод и удалите любые данные, которые не следует публиковать.
См. также: VERSION.
InteractiveUtils.methodswithФункция
methodswith(typ[, module or function]; supertypes::Bool=false])
Возвращает массив методов с аргументом типа typ.
Необязательный второй аргумент ограничивает поиск определенным модулем или функцией (по умолчанию все модули верхнего уровня).
Если ключевой аргумент supertypes имеет значение true, также возвращает аргументы с типом-предком typ, исключая тип Any.
InteractiveUtils.subtypesФункция
subtypes(T::DataType)
Возвращает список непосредственных подтипов типа данных T. Обратите внимание, что включаются все загруженные подтипы, включая те, которые не видны в текущем модуле.
См. также supertype, supertypes, methodswith.
Примеры
julia> subtypes(Integer)
3-element Vector{Any}:
Bool
Signed
Unsigned
InteractiveUtils.supertypesФункция
supertypes(T::Type)
Возвращает кортеж (T, ..., Any) из T и всех его типов-предков, как определено последовательными вызовами функции supertype, упорядоченными по <: и завершенными Any.
См. также subtypes.
Примеры
julia> supertypes(Int) (Int64, Signed, Integer, Real, Number, Any)
InteractiveUtils.editМетод
edit(path::AbstractString, line::Integer=0, column::Integer=0)
Редактирование файла или каталога, необязательно с указанием номера строки для редактирования в файле. Возвращение к приглашению julia после выхода из редактора. Редактор может быть изменён путём установки JULIA_EDITOR, VISUAL или EDITOR как переменной окружения.
См. также define_editor.
InteractiveUtils.editМетод
edit(function, [types]) edit(module)
Редактирование определения функции, необязательно с указанием кортежа типов для указания метода для редактирования. Для модулей открывается основной файл источника. Модуль необходимо предварительно загрузить с помощью using или import.
edit для модулей требует как минимум Julia 1.1.
Для обеспечения возможности открытия файла по указанной строке, возможно, необходимо предварительно вызвать define_editor.
InteractiveUtils.@editМакрос
@edit
Вычисляет аргументы вызова функции или макроса, определяет их типы и вызывает функцию edit для полученного выражения.
InteractiveUtils.define_editorФункция
define_editor(fn, pattern; wait=false)
Определяет новый редактор, соответствующий pattern, который может использоваться для открытия файла (возможно, с указанным номером строки) с помощью fn.
Аргумент fn — это функция, определяющая, как открыть файл с помощью данного редактора. Она должна принимать четыре аргумента, как указано ниже:
-
cmd- базовый объект команды для редактора -
path- путь к открываемому файлу источника -
line- номер строки для открытия редактора -
column- номер столбца для открытия редактора
Редакторы, которые не могут открыть файл по конкретной строке или столбцу с помощью команды, могут игнорировать аргументы line и/или column соответственно. Функция-обработчик fn должна возвращать соответствующий объект Cmd для открытия файла или nothing для обозначения невозможности редактирования этого файла. Используйте nothing для обозначения того, что этот редактор не подходит для текущей среды, и следует попробовать другой. Возможно добавление более универсальных хуков редактирования, не требующих запуска внешних команд, путем непосредственного добавления обработчика в вектор EDITOR_CALLBACKS.
Аргумент pattern — это строка, регулярное выражение или массив строк и регулярных выражений. Чтобы функция fn была вызвана, одно из шаблонов должно соответствовать значению EDITOR, VISUAL или JULIA_EDITOR. Для строк, строка должна быть равна basename первого слова команды редактора, с удалением расширения (если таковое имеется). Например, "vi" не соответствует "vim -g", но соответствует "/usr/bin/vi -m"; он также соответствует vi.exe. Если pattern является регулярным выражением, оно применяется ко всему команде редактора как экранированной строке оболочки. Массив шаблонов соответствует, если какой-либо из элементов соответствует. Если несколько редакторов соответствуют, используется тот, который был добавлен последним.
По умолчанию Julia не ждет закрытия редактора, запуская его в фоновом режиме. Однако, если редактор терминальный, возможно, потребуется установить wait=true, и Julia будет ждать закрытия редактора перед возобновлением работы.
Если одна из переменных окружения редактора установлена, но ни одна запись редактора ей не соответствует, вызывается запись редактора по умолчанию:
(cmd, path, line, column) -> `$cmd $path`
Обратите внимание, что многие редакторы уже определены. Все следующие команды должны уже работать:
- emacs
- emacsclient
- vim
- nvim
- nano
- micro
- kak
- helix
- textmate
- mate
- kate
- subl
- atom
- notepad++
- Visual Studio Code
- open
- pycharm
- bbedit
Пример:
Следующий пример определяет использование терминального редактора emacs:
define_editor(
r"\bemacs\b.*\s(-nw|--no-window-system)\b", wait=true) do cmd, path, line
`$cmd +$line $path`
end
define_editor был введён в Julia 1.4.
InteractiveUtils.lessМетод
less(file::AbstractString, [line::Integer])
Отображение файла с помощью стандартного визуализатора, необязательно с указанием начальной строки. Возвращение к приглашению julia после выхода из визуализатора.
InteractiveUtils.lessМетод
less(function, [types])
Отображение определения функции с помощью стандартного визуализатора, необязательно с указанием кортежа типов для указания метода для отображения.
InteractiveUtils.@lessМакрос
@less
Вычисляет аргументы вызова функции или макроса, определяет их типы и вызывает функцию less для полученного выражения.
См. также: @edit, @which, @code_lowered.
InteractiveUtils.@whichМакрос
@which
Применяется к вызову функции или макроса, вычисляет аргументы указанного вызова и возвращает объект Method для метода, который будет вызван для этих аргументов. Применяется к переменной, возвращает модуль, в котором была связана переменная. Вызывает функцию which.
InteractiveUtils.@functionlocМакрос
@functionloc
Применяется к вызову функции или макроса, вычисляет аргументы указанного вызова и возвращает кортеж (filename,line) с местоположением метода, который будет вызван для этих аргументов. Вызывает функцию functionloc.
InteractiveUtils.@code_loweredМакрос
@code_lowered
Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_lowered над полученным выражением.
InteractiveUtils.@code_typedМакрос
@code_typed
Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_typed над полученным выражением. Используйте необязательный аргумент optimize для
@code_typed optimize=true foo(x)
управления тем, применяются ли дополнительные оптимизации, такие как инлайнинг.
InteractiveUtils.code_warntypeФункция
code_warntype([io::IO], f, types; debuginfo=:default)
Выводит пониженные и выведенные типы AST для методов, соответствующих заданной обобщенной функции и сигнатуре типа, в io, по умолчанию в stdout. AST аннотированы таким образом, чтобы подчеркивать «нелистовые» типы, которые могут представлять проблему для производительности (если доступен цвет, отображаются красным). Это служит предупреждением о потенциальной нестабильности типа.
Не все нелистовые типы представляют собой особую проблему для производительности, а характеристики производительности конкретного типа являются реализацией деталей компилятора. code_warntype стремится окрашивать типы красным, если они могут быть проблемой для производительности, поэтому некоторые типы могут быть окрашены красным даже в том случае, если они не влияют на производительность. Малые объединения конкретных типов обычно не вызывают опасений, поэтому они выделены жёлтым цветом.
Ключевой аргумент debuginfo может быть одним из :source или :none (по умолчанию) для задания уровня подробности комментариев к коду.
См. @code_warntype для получения дополнительной информации.
InteractiveUtils.@code_warntypeМакрос
@code_warntype
Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_warntype над полученным выражением.
InteractiveUtils.code_llvmФункция
code_llvm([io=stdout,], f, types; raw=false, dump_module=false, optimize=true, debuginfo=:default)
Выводит сгенерированный LLVM-биткод для выполнения метода, соответствующего заданной обобщенной функции и сигнатуре типа, в io.
Если ключевое слово optimize не задано, код будет показан до оптимизаций LLVM. Вся метаданные и вызовы dbg.* удаляются из выведенного биткода. Для полного IR установите ключевое слово raw в true. Чтобы вывести весь модуль, содержащий функцию (с объявлениями), установите ключевое слово dump_module в true. Ключевой аргумент debuginfo может принимать одно из значений source (по умолчанию) или none для задания уровня подробности комментариев к коду.
InteractiveUtils.@code_llvmМакрос
@code_llvm
Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_llvm над полученным выражением. Установите необязательные ключевые аргументы raw, dump_module, debuginfo, optimize перед вызовом функции, как в этом примере:
@code_llvm raw=true dump_module=true debuginfo=:default f(x) @code_llvm optimize=false f(x)
optimize управляет тем, применяются ли дополнительные оптимизации, такие как инлайнинг. raw делает все метаданные и вызовы dbg.* видимыми. debuginfo может принимать одно из значений :source (по умолчанию) или :none для задания уровня подробности комментариев к коду. dump_module выводит весь модуль, содержащий функцию.
InteractiveUtils.code_nativeФункция
code_native([io=stdout,], f, types; syntax=:att, debuginfo=:default, binary=false, dump_module=true)
Выводит сгенерированные машинные инструкции ассемблера для выполнения метода, соответствующего заданной обобщенной функции и сигнатуре типа, в io.
- Установите синтаксис ассемблера, задав
syntaxв:att(по умолчанию) для синтаксиса AT&T или:intelдля синтаксиса Intel. - Установите уровень подробности комментариев к коду, задав
debuginfoв:source(по умолчанию) или:none. - Если
binaryравноtrue, также выведите двоичный машинный код для каждой инструкции, предваряя её сокращённым адресом. - Если
dump_moduleравноfalse, не выводите метаданные, такие как rodata или директивы.
См. также: @code_native, code_llvm, code_typed и code_lowered
InteractiveUtils.@code_nativeМакрос
@code_native
Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_native над полученным выражением.
Установите любые необязательные ключевые аргументы syntax, debuginfo, binary или dump_module перед вызовом функции, как в этом примере:
@code_native syntax=:intel debuginfo=:default binary=true dump_module=false f(x)
- Установите синтаксис ассемблера, задав
syntaxв:att(по умолчанию) для синтаксиса AT&T или:intelдля синтаксиса Intel. - Установите уровень подробности комментариев к коду, задав
debuginfoв:source(по умолчанию) или:none. - Если
binaryравноtrue, также выведите двоичный машинный код для каждой инструкции, предваряя её сокращённым адресом. - Если
dump_moduleравноfalse, не выводите метаданные, такие как rodata или директивы.
См. также: code_native, @code_llvm, @code_typed и @code_lowered
InteractiveUtils.@time_importsМакрос
@time_imports
Макрос для выполнения выражения и создания отчёта о времени, затраченном на импорт пакетов и их зависимостей. Все время компиляции будет отображаться в процентах, а также сколько из этого было рекомпиляцией, если таковая имелась.
Каждая строка соответствует пакету или расширению пакета. Отображаемое время — это время импорта самого пакета, без учёта времени загрузки его зависимостей.
В Julia 1.9+ расширения пакетов будут отображаться как Родитель → Расширение.
Во время процесса загрузки пакет последовательно импортирует все свои зависимости, а не только непосредственные.
julia> @time_imports using CSV
50.7 ms Parsers 17.52% compilation time
0.2 ms DataValueInterfaces
1.6 ms DataAPI
0.1 ms IteratorInterfaceExtensions
0.1 ms TableTraits
17.5 ms Tables
26.8 ms PooledArrays
193.7 ms SentinelArrays 75.12% compilation time
8.6 ms InlineStrings
20.3 ms WeakRefStrings
2.0 ms TranscodingStreams
1.4 ms Zlib_jll
1.8 ms CodecZlib
0.8 ms Compat
13.1 ms FilePathsBase 28.39% compilation time
1681.2 ms CSV 92.40% compilation time
Этот макрос требует, по крайней мере, Julia 1.8
InteractiveUtils.clipboardФункция
clipboard(x)
Отправляет отформатированный вид x в буфер обмена операционной системы («копировать»).
clipboard() -> AbstractString
Возвращает строку с содержимым буфера обмена операционной системы («вставить»).
© 2009–2023 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.9/stdlib/InteractiveUtils/