Spec-Zone.ru › Octave 5

11.9 Файлы функций

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

Octave не требует загрузки определений функций из файлов перед их использованием. Вам просто нужно поместить определения функций в место, где Octave может их найти.

Когда Octave сталкивается с идентификатором, который не определен, он сначала ищет переменные или функции, которые уже скомпилированы и в настоящее время перечислены в его таблице символов. Если он не найдёт определения там, он ищет в списке каталогов (путь) файлы с расширением .m, имеющие то же имя базы, что и неопределённый идентификатор.5 Как только Octave найдёт файл с соответствующим именем, содержимое файла читается. Если в нём определена одна функция, она компилируется и выполняется. См. Файлы сценариев, для получения более подробной информации о том, как определить более одной функции в одном файле.

Когда Octave определяет функцию из файла функции, он сохраняет полное имя прочитанного файла и отметку времени файла. Если отметка времени файла изменяется, Octave может перезагрузить файл. При интерактивном выполнении Octave проверка отметки времени обычно происходит не более одного раза при каждом отображении приглашения Octave. Поиск новых определений функций также происходит при изменении текущей рабочей директории.

Проверка отметки времени позволяет редактировать определение функции во время выполнения Octave и автоматически использовать новое определение функции без необходимости перезапуска сеанса Octave.

Чтобы избежать ненужного снижения производительности за счёт проверки отметки времени функций, которые вряд ли изменятся, Octave предполагает, что файлы функций в дереве каталогов octave-home/share/octave/version/m не изменятся, поэтому не нужно проверять их отметки времени каждый раз, когда используются функции, определённые в этих файлах. Как правило, это очень хорошее предположение и обеспечивает значительное улучшение производительности для файлов функций, поставляемых с Octave.

Если вам известно, что ваши собственные файлы функций не изменятся во время выполнения Octave, вы можете улучшить производительность, вызвав ignore_function_time_stamp ("all"), чтобы Octave игнорировал отметки времени всех файлов функций. Передача "system" в эту функцию сбрасывает поведение по умолчанию.

edit имя
edit значение поля
значение = edit ("получить", поле)
значение = edit ("получить", "все")

Редактирует указанную функцию или изменяет настройки редактора.

Если edit вызывается с именем файла или функции в качестве аргумента, оно будет открыто в текстовом редакторе, определённом EDITOR.

  • Если функция имя доступна в файле на вашем пути и этот файл можно изменить, то она будет отредактирована на месте. Если это системная функция, то она сначала будет скопирована в директорию HOME (см. ниже), а затем отредактирована. Если файл не найден, то рассматривается вариант m-файла с окончанием ".m". Если всё ещё не найден файл, то рассматриваются варианты с префиксом "@" и затем с префиксом "@" и суффиксом ".m".
  • Если имя — имя функции, определённой в интерпретаторе, но не в m-файле, то m-файл будет создан в HOME для хранения этой функции вместе с её текущим определением.
  • Если name.cc указано, то он будет искать name.cc в пути и попытается изменить его, в противном случае создаст новый файл .cc в текущей директории. Если имя оказывается m-файлом или функцией, определённой интерпретатором, то текст этой функции будет вставлен в файл .cc как комментарий.
  • Если имя.расширение находится на вашем пути, оно будет отредактировано; в противном случае редактор будет запущен с имя.расширение в текущей директории в качестве имени файла. Если имя.расширение нельзя изменить, оно будет скопировано в HOME перед редактированием.

    Предупреждение: Возможно, вам нужно будет очистить имя перед тем, как новое определение станет доступным. Если вы редактируете файл .cc, вам нужно будет выполнить mkoctfile name.cc перед тем, как определение станет доступным.

Если edit вызывается с переменными поле и значение, значение управляющего поля поле будет установлено в значение.

Если запрашивается выходной аргумент, и первый входной аргумент get, то edit вернёт значение управляющего поля поле. Если управляющее поле не существует, edit вернёт структуру, содержащую все поля и значения. Таким образом, edit ("get", "all") возвращает полную управляющую структуру.

Ниже перечислены используемые управляющие поля:

‘home’

Это расположение локальных m-файлов пользователя. Убедитесь, что он указан в вашем пути. По умолчанию — ~/octave.

‘author’

Это имя, которое нужно поместить после поля "## Автор:" новых функций. По умолчанию оно определяется из поля gecos базы данных паролей.

‘email’

Это адрес электронной почты, который нужно указать после имени в поле автора. По умолчанию он определяется из <$LOGNAME@$HOSTNAME>, и если $HOSTNAME не определён, используется uname -n. Вероятно, вам следует заменить это. Убедитесь, что используется формат user@host.

‘license’
‘gpl’

GNU общая публичная лицензия (по умолчанию).

‘bsd’

Лицензия в стиле BSD без пункта о рекламе.

‘pd’

Общественное достояние.

‘"текст"’

Ваш собственный дефолтный текст авторских прав и лицензии.

Если вы не укажете ‘pd’, edit добавит к заявлению об авторских правах строку "Copyright (C) ГГГГ Автор".

‘mode’

Это значение определяет, должен ли редактор запускаться в асинхронном режиме (редактор запускается в фоновом режиме, а Octave продолжает работу) или в синхронном режиме (Octave ожидает завершения работы редактора). Установите его в "sync" для запуска редактора в синхронном режиме. По умолчанию — "async" (см. system).

‘editinplace’

Определяет, должны ли файлы редактироваться на месте, независимо от того, изменяемы они или нет. По умолчанию — false.

mfilename ()
mfilename ("fullpath")
mfilename ("fullpathext")

Возвращает имя выполняемого в данный момент файла.

Возвращает имя текущего выполняемого скрипта или функции без расширения. Если вызвана вне m-файла, например, из командной строки, возвращается пустая строка.

Если указан аргумент "fullpath", в имя файла включается часть пути, но не расширение.

Если указан аргумент "fullpathext", в имя файла включается часть пути и расширение.

См. также: inputname, dbstack.

val = ignore_function_time_stamp ()
old_val = ignore_function_time_stamp (new_val)

Запрос или установка внутренней переменной, контролирующей, проверяет ли Octave отметку времени файлов при каждом поиске функций, определённых в файлах функций.

Если внутренняя переменная установлена в "system", Octave не будет автоматически перекомпилировать файлы функций в подкаталогах octave-home/lib/version, если они изменились с момента последней компиляции, но будет перекомпилировать другие файлы функций в пути поиска, если они изменятся.

Если установлена в "all", Octave не будет перекомпилировать никакие файлы функций, если их определения не удалены с помощью clear.

Если установлена в "none", Octave всегда будет проверять отметки времени файлов, чтобы определить, нужно ли перекомпилировать функции, определённые в файлах функций.

• Изменение пути загрузки:
• Подфункции:
• Приватные функции:
• Вложенные функции:
• Перегрузка и автоматическая загрузка:
• Блокировка функций:
• Приоритет функций:

Примечания

(5)

Суффикс ‘.m’ был выбран для совместимости с MATLAB.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Function-Files.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API