функции
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 — вставленное определение (анонимной) функции на языке Scilab
- exec — script file execution
- lib — loads a library of Scilab functions and variables, and sets its name
- getd — загрузка всех функций, определённых в директории
- genlib — строит библиотеку из набора *.sci-файлов, определяющих функции в указанной директории
- exists — проверяет существование переменной
- varargin — переменное число аргументов в списке входных аргументов
- varargout — переменное число аргументов в списке выходных аргументов
- имена — синтаксис имён в Scilab
Report an issue | ||
<< boolean | types | hypermatrices >> |