Spec-Zone.ru › Octave 9

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

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

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

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

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

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

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

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

: edit name
: edit field value
: value = edit ("get", field)
: value = edit ("get", "all")

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

Если edit вызвана с именем файла или функции в качестве аргумента, этот файл или функция откроется в текстовом редакторе по умолчанию. Редактор по умолчанию для графического интерфейса Octave задаётся на вкладке Editor окна Preferences. Редактор по умолчанию для CLI задаётся функцией EDITOR.

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

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

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

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

Используются следующие управляющие поля:

‘author’

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

‘email’

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

‘license’
‘gpl’

Стандартная общественная лицензия GNU (по умолчанию).

‘bsd’

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

‘pd’

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

‘"text"’

Ваши собственные значения авторского права и лицензии по умолчанию.

Если не указать ‘pd’, edit добавит перед текстом лицензии заявление об авторском праве "Copyright (C) YYYY Author".

‘mode’

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

‘editinplace’

Определяет, следует ли редактировать файлы на месте, независимо от того, доступны ли они для изменения. По умолчанию используется true. Установите значение false, чтобы автоматически копировать доступные только для чтения файлы функций в каталог ‘home’, если он существует, при их редактировании.

‘home’

Это значение указывает каталог, в который следует копировать системные m-файлы перед открытием в редакторе. Предполагается, что этот каталог также включён в путь поиска, поэтому отредактированная копия системного файла функции будет иметь приоритет над исходным файлом. Эта настройка действует только если для ‘editinplace’ задано значение false. По умолчанию используется пустая матрица ([]), то есть каталог не используется. В предыдущих версиях Octave по умолчанию использовался каталог ~/octave.

См. также: EDITOR, path.

: 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/share/version/m, если они изменились после последней компиляции, но будет повторно компилировать другие файлы функций в пути поиска при их изменении.

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

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

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

© 1996–2026 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/v9.4.0/Function-Files.html

Spec-Zone.ru

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