Утилиты взаимодействия
Base.Docs.aproposФункция
apropos(string)
Поиск по всей документации строки, игнорируя регистр.
исходный код
InteractiveUtils.varinfoФункция
varinfo(m::Module=Main, pattern::Regex=r"")
Возвращает таблицу Markdown, содержащую информацию об экспортированных глобальных переменных в модуле, необязательно ограниченную теми, которые соответствуют pattern.
Оценочное значение потребления памяти — это приблизительная нижняя граница размера внутренней структуры объекта.
исходный код
InteractiveUtils.versioninfoФункция
versioninfo(io::IO=stdout; verbose::Bool=false)
Выводит информацию о версии используемой Julia. Вывод контролируется булевыми ключевыми аргументами:
-
verbose: вывести всю дополнительную информацию
InteractiveUtils.methodswithФункция
methodswith(typ[, module or function]; supertypes::Bool=false])
Возвращает массив методов с аргументом типа typ.
Необязательный второй аргумент сужает поиск до конкретного модуля или функции (по умолчанию — все модули верхнего уровня).
Если ключевой аргумент supertypes равен true, то также возвращаются аргументы с родительским типом typ, исключая тип Any.
InteractiveUtils.subtypesФункция
subtypes(T::DataType)
Возвращает список непосредственных подтипов типа данных T. Обратите внимание, что все загруженные в настоящее время подтипы включены, включая те, которые не видны в текущем модуле.
Примеры
julia> subtypes(Integer)
3-element Array{Any,1}:
Bool
Signed
Unsigned
исходный код
InteractiveUtils.editМетод
edit(path::AbstractString, line::Integer=0)
Редактирование файла или каталога, при желании, указав номер строки для редактирования файла. Возврат к приглашению julia при выходе из редактора. Редактор можно изменить, установив JULIA_EDITOR, VISUAL или EDITOR в качестве переменной окружения.
См. также: (define_editor)[@ref]
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
- vim
- nvim
- nano
- textmate
- mate
- kate
- subl
- atom
- notepad++
- Visual Studio Code
- open
- pycharm
Пример:
Следующее определяет использование терминального 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 над полученным выражением.
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 аннотированы таким образом, чтобы подчеркивать типы «не-листьев» (если доступен цвет, отображается красным). Это служит предупреждением о потенциальной нестабильности типов. Не все типы «не-листьев» являются проблематичными для производительности, поэтому результаты необходимо использовать с осторожностью. В частности, объединения, содержащие либо 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)
Выводит инструкции машинного кода, сгенерированные для выполнения метода, соответствующего заданной обобщенной функции и подписи типа, в io. Переключать синтаксис ассемблера с помощью символа syntax заданного как :att для синтаксиса AT&T или :intel для синтаксиса Intel. Ключевой аргумент debuginfo может быть source (по умолчанию) или none, для указания подробности коментариев.
InteractiveUtils.@code_nativeМакрос
@code_native
Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_native для полученного выражения.
Установите необязательный ключевой аргумент debuginfo перед вызовом функции, например:
@code_native debuginfo=:default f(x)
debuginfo может быть source (по умолчанию) или none, для указания подробности коментариев.
InteractiveUtils.clipboardФункция
clipboard(x)
Отправляет печатную форму x в буфер обмена операционной системы ("копировать").
clipboard() -> AbstractString
Возвращает строку с содержимым буфера обмена операционной системы ("вставить").
исходный код
© 2009–2020 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.4.2/stdlib/InteractiveUtils/