- Справка Scilab
- Функции
- Встроенные и внешние
- Libraries
- profiling
- argn
- bytecode
- code2str
- comp
- deff
- edit
- exec
- execstr
- fun2string
- funcprot
- function
- функции
- getd
- head_comments
- listfunctions
- macr2lst
- macr2tree
- макрос
- macrovar
- mode
- перегрузка
- sciargs
- str2code
- tree2code
- varargin
- varargout
- bytecodewalk
- recompilefunction
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
функции
Scilab-процедуры и Scilab-объекты
Описание
Функции являются процедурами Scilab ("макрос", "функция" и "процедура" имеют одно и то же значение).
Определение функции
Обычно они определяются в файлах с помощью редактора и загружаются в Scilab, используя функцию exec или через библиотеку (см. lib либо genlib). Однако, они также могут быть определены во время исполнения программы (см. deff либо function). Функция определяется двумя составляющими:
часть "синтаксис определения", как например:
function [y1, ..., yn]=foo(x1, ...,xm) function [y1, ..., yn, varargout]=foo(x1, ...,xm,varargin)
ряд Scilab-инструкций.
Строка "синтаксиса определения" указывает "полный" синтаксис
вызова этой функции. yi
- выходные
переменные, вычисленные в зависимости от входных переменных
xi
и переменные, существующие в Scilab'е
в момент исполнения функции.
Вызов функции
Обычно синтаксис вызова функции следующий:
[y1,...,yn]=foo(x1,...,xm)
. Можно использовать более короткий список входных или выходных аргументов, чем определённый. В таких случаях используются или устанавливаются только самые первые переменные, начиная слева.Функция argn может быть использована для получения фактического количества аргументов при вызове.
Можно определять функцию с неопределённым максимальным количеством входных или выходных аргументов. Это можно сделать, используя ключевые слова varargin и varargout.
Также можно использовать "именованный аргумент" для определения входных аргументов: предположим, что функция
fun1
, определённая какfunction y1=fun1(x1, x2, x3)
, тогда её можно вызвать следующим синтаксисом:y = fun1(x1=33, x3=[1 2 3])
; внутриfun1
переменнаяx2
не будет определена.Её можно также вызвать следующим синтаксисом:
y = fun1(x1=33, y='foo')
. В таком случае переменнаяy
будет доступна в контексте функцииfun1
.Обратите внимание, что максимальное количество аргументов должно быть меньше или равно числу формальных входных аргументов, используемых в части синтаксиса функции.Проверить определены ли переменные можно с помощью функции exists.
Когда у функции нет аргументов слева и она вызывается только с аргументами символьных строк, синтаксис вызова может быть упрощён:
fun('a','toto','a string')
что эквивалентно:
fun a toto 'a string'
Прочие вопросы
Функции являются Scilab-объектами (с номерами типа 13 или 11). И ими можно управлять (создавать, сохранять, загружать, передавать в качестве аргументов, и т. д.) как и другими типами переменных.
Коллекции функций можно собирать в библиотеки. Функции,
которые начинаются со знака %
(например,
%foo
) часто используются чтобы
перегрузить (см. перегрузку) операции или
функции для нового типа данных.
Заметьте, что имя функции должно удовлетворять некоторым правилам синтаксиса (см. имена). |
Примеры
//определение встраиваемой функции (см. function) function [x, y]=myfct(a, b) x=a+b y=a-b endfunction [x,y]=myfct(3,2) //определение встраиваемой функции (см. deff) deff('[x,y]=myfct(a,b)',['x=a+b'; 'y=a-b']) // определение в ASCII-файле (см. exec) exec SCI/modules/elementary_functions/macros/asinh.sci;
Смотрите также
- function — открывает определение функции
- deff — определение функции во время выполнения программы
- exec — исполнение файла-сценария
- comp — компиляция scilab-функции
- lib — library definition
- getd — загрузка всех функций, определённых в директории
- genlib — build library from functions in given directory
- exists — проверяет существование переменной
- varargin — переменное число аргументов в списке входных аргументов
- varargout — переменное число аргументов в списке выходных аргументов
- имена — синтаксис имён в Scilab
Report an issue | ||
<< function | Функции | getd >> |