Интерактивные утилиты
Этот модуль предназначен для интерактивной работы. Он загружается автоматически в интерактивном режиме.
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)
Редактирование файла или каталога, необязательно указав номер строки для редактирования в файле. Возврат к приглашению 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- номер строки, с которой следует открыть редактор
Редакторы, которые не могут открыть файл на конкретной строке с помощью команды, могут игнорировать аргумент line . Функция обратного вызова 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) -> `$cmd $path`
Обратите внимание, что многие редакторы уже определены. Все следующие команды должны уже работать:
- emacs
- emacsclient
- vim
- nvim
- nano
- micro
- kak
- 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)
Выводит пониженные и типизированные АСТ-деревья для методов, соответствующих заданной обобщенной функции и сигнатуре типа, в io, по умолчанию stdout. АСТ-деревья аннотированы таким образом, что «нелистовые» типы будут выделены (если доступен цвет, отображаются красным). Это служит предупреждением о потенциальной нестабильности типа. Не все нелистовые типы являются особенно проблематичными для производительности, поэтому результаты следует использовать осмотрительно. В частности, объединения, содержащие либо missing, либо nothing, отображаются жёлтым цветом, так как они часто являются преднамеренными.
Ключевой аргумент 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> @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–2022 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.8/stdlib/InteractiveUtils/