以下标识符是关键字,不能用作变量名或函数名:
工具函数 | 变量声明 | 函数定义 | 控制语句 | 迭代结构 | 类定义结构 | 执行环境
__FILE__ | __LINE__ | break | case | catch | classdef | continue | do | else | elseif | end | end_try_catch | end_unwind_protect | endclassdef | endenumeration | endevents | endfor | endfunction | endif | endmethods | endparfor | endproperties | endswitch | endwhile | enumeration | events | for | function | global | if | methods | otherwise | parfor | persistent | properties | return | switch | try | until | unwind_protect | unwind_protect_cleanup | while
函数 iskeyword 可用于快速检查一个标识符是否为 Octave 所保留的关键字。
var ¶将变量声明为全局作用域。
global x; if (isempty (x)) x = 1; endif
另请参见: persistent。
var ¶将变量声明为持久变量。
在函数中声明为持久的变量,会在对该函数的多次调用之间将其内容保留在内存中。持久变量与全局变量的区别在于:持久变量在作用域上局限于特定函数,在其他地方不可见。
另请参见: global。
outputs = function_name (input, …) ¶ function_name (input, …) ¶outputs = function_name ¶开始一个名为 function_name 的函数体,以 outputs 为返回值,以 inputs 为参数。
之后可以在 Octave 中使用以下语法调用该函数:
[output1, output2, ...] = function_name (input1, input2, ...)
另请参见: return。
数组的最后一个元素,或任何 for、parfor、if、do、while、function、switch、try 或 unwind_protect 块的结束标记。
作为数组索引使用时,特殊索引 "end" 表示索引操作中的最后一个有效条目。
示例:
x = [ 1 2 3; 4 5 6 ]; x(1,end) ⇒ 3 x(end,1) ⇒ 4 x(end,end) ⇒ 6
编程注意事项:
end 关键字不能用于 subsref、subsasgn 或 substruct 的手动索引操作中。
end 在索引表达式中的使用,需要通过如下函数定义来重载它:
function last_index = end (obj, end_dim, ndim_obj)
if (end_dim == ndim_obj)
last_index = prod (size (obj)(end_dim:ndim_obj));
else
last_index = size (obj, end_dim);
endif
endfunction
更多信息,请参见 面向对象编程。
另请参见: for、parfor、if、do、while、function、switch、try、unwind_protect。
立即将执行控制权从函数或脚本返回到调用代码。
return 用于停止执行代码并立即退出 m 文件,而不是继续执行直到函数或脚本的末尾。
如果函数或脚本是直接调用的,而非从 m 文件中的调用代码调用,则 Octave 返回到命令行。
另请参见: function。
(cond) … endif ¶(cond) … else … endif ¶(cond) … elseif (cond) … endif ¶(cond) … elseif (cond) … else … endif ¶开始一个 if 块。
条件 cond 为真(true)的条件是:它不为空且所有值均为非零。
x = 1;
if (x == 1)
disp ("one");
elseif (x == 2)
disp ("two");
else
disp ("not one or two");
endif
另请参见: switch。
statement ¶开始一个 switch 块。
yesno = "yes";
switch (yesno)
case {"Yes" "yes" "YES" "y" "Y"}
value = 1;
case {"No" "no" "NO" "n" "N"}
value = 0;
otherwise
error ("invalid value");
endswitch
value ¶{value, …} ¶switch 块中的 case 语句。
Octave 的 case 是互斥的,不会像 C 语言的 case 那样"穿透"执行。switch 语句必须至少包含一个 case。参见 switch 的示例。
另请参见: switch。
开始一个 try-catch 块。
如果在 try 块内发生错误,则会运行 catch 代码,并且执行将在 catch 块之后继续(但通常建议在清理完成后使用 lasterr 函数重新抛出错误)。
另请参见: catch、unwind_protect。
开始一个 unwind_protect 块。
如果在 unwind_protect 块的第一部分发生错误,在抛出错误之前会先执行 unwind_protect_cleanup 块中的命令。如果没有发生错误,unwind_protect_cleanup 块仍然会执行。换句话说,无论 unwind_protect 块中的操作成功还是失败,unwind_protect_cleanup 代码都会保证被执行。
另请参见: unwind_protect_cleanup、try。
开始 unwind_protect 块的清理部分。
另请参见: unwind_protect。
标记 unwind_protect 块的结束。
另请参见: unwind_protect。
(cond) ¶开始一个 while 循环。
条件 cond 为真(true)的条件是:它不为空且所有值均为非零。
i = 0; while (i < 10) i++ endwhile
开始一个 do-until 循环。
这与 while 循环的不同之处在于循环体至少执行一次。
i = 0; do i++ until (i == 10)
i = range ¶(i = range, maxproc) ¶开始一个可能并行执行的 for 循环。
parfor 循环的语法与 for 循环相同。如果您的 Octave 会话启用了并行处理池,parfor 循环的迭代将在池的工作者之间并行执行。否则,parfor 的行为将与 for 完全相同。
在并行模式下运行时,parfor 循环的迭代不保证按顺序执行,并且对于可以在循环体内执行的数据访问操作有额外的限制。
警告: 并行处理池目前在 Octave 中尚未实现;parfor 当前的行为与普通的 for 循环完全相同。
parfor i = 1:10 i endparfor
开始一个 classdef 块。
另请参见: properties、methods、events、enumeration。
在 classdef 定义中标记属性块的开始。注意,函数 "properties" 是一个列出 classdef 类或对象属性的函数。
另请参见: endproperties。
标记 classdef 定义中属性块的结束。
另请参见: properties。
在 classdef 定义中标记方法块的开始。注意,函数 "methods" 是一个列出类或对象方法的函数。
另请参见: endmethods。
在 classdef 定义中开始一个事件块。
在 classdef 定义中开始一个枚举块。
标记 classdef 定义中枚举块的结束。
另请参见: enumeration。
当词法分析器识别到 "__FILE__" 关键字时,它会返回一个字符数组,其中包含正在执行的文件的完整名称和路径。如果从命令行调用,"__FILE__" 将返回 "stdin"。
另请参见: __LINE__。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4