Spec-Zone.ru › Octave 9

8.2.1 Передача по значению

В Octave, в отличие от Fortran, аргументы функций передаются по значению: это означает, что каждый аргумент при вызове функции вычисляется и помещается во временную область памяти до передачи функции. В настоящее время невозможно указать, что параметр функции следует передавать по ссылке, а не по значению. Это означает, что невозможно напрямую изменить значение параметра функции в вызывающей функции. Можно изменить только локальную копию внутри тела функции. Например, функция

function f (x, n)
  while (n-- > 0)
    disp (x);
  endwhile
endfunction

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

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

foo = "bar";
fcn (foo)

не следует считать, что аргумент — это «переменная foo». Вместо этого считайте, что аргумент — это строковое значение "bar".

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

x = rand (1000);
f (x);

фактически не приводит к существованию двух матриц размером 1000 на 1000 элементов, если только функция f не изменяет значение своего аргумента. В этом случае Octave должен создать копию, чтобы не изменить значение за пределами области видимости функции f и не пытаться изменить значение константы или временного результата (что, скорее всего, не удастся!).

© 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/Call-by-Value.html

Spec-Zone.ru

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