F.1 关键词

以下标识符是关键字,不能用作变量名或函数名:

类别:

工具函数 | 变量声明 | 函数定义 | 控制语句 | 迭代结构 | 类定义结构 | 执行环境

按字母顺序排列的关键字列表:

__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 所保留的关键字。

 
iskeyword ()
iskeyword (name)

如果 name 是 Octave 关键字则返回真值(true)。

如果省略 name 参数,则返回关键字列表。

另请参见: isvarnameexist

变量声明:

 
global var

将变量声明为全局作用域。

global x;
if (isempty (x))
  x = 1;
endif

另请参见: persistent

 
persistent var

将变量声明为持久变量。

在函数中声明为持久的变量,会在对该函数的多次调用之间将其内容保留在内存中。持久变量与全局变量的区别在于:持久变量在作用域上局限于特定函数,在其他地方不可见。

另请参见: global

函数定义:

 
function outputs = function_name (input, …)
function function_name (input, …)
function outputs = function_name

开始一个名为 function_name 的函数体,以 outputs 为返回值,以 inputs 为参数。

之后可以在 Octave 中使用以下语法调用该函数:

[output1, output2, ...] = function_name (input1, input2, ...)

另请参见: return

 
endfunction

标记函数体的结束。

另请参见: function

 
end

数组的最后一个元素,或任何 forparforifdowhilefunctionswitchtryunwind_protect 块的结束标记。

作为数组索引使用时,特殊索引 "end" 表示索引操作中的最后一个有效条目。

示例:

x = [ 1 2 3; 4 5 6 ];
x(1,end)
 ⇒  3
x(end,1)
 ⇒  4
x(end,end)
 ⇒  6

编程注意事项:

  1. end 关键字不能用于 subsrefsubsasgnsubstruct 的手动索引操作中。
  2. 对于自定义类,要启用 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
    

    更多信息,请参见 面向对象编程

另请参见: forparforifdowhilefunctionswitchtryunwind_protect

 
return

立即将执行控制权从函数或脚本返回到调用代码。

return 用于停止执行代码并立即退出 m 文件,而不是继续执行直到函数或脚本的末尾。

如果函数或脚本是直接调用的,而非从 m 文件中的调用代码调用,则 Octave 返回到命令行。

另请参见: function

控制语句:

 
if (cond) … endif
if (cond) … else … endif
if (cond) … elseif (cond) … endif
if (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

 
else

if 块的备选操作分支。

参见 if 的示例。

另请参见: if

 
elseif (cond)

if 块的备选条件测试分支。

条件 cond 为真(true)的条件是:它不为空且所有值均为非零。

参见 if 的示例。

另请参见: if

 
endif

标记 if 块的结束。

参见 if 的示例。

另请参见: if

 
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

另请参见: ifcaseotherwise

 
case value
case {value, …}

switch 块中的 case 语句。

Octave 的 case 是互斥的,不会像 C 语言的 case 那样"穿透"执行。switch 语句必须至少包含一个 case。参见 switch 的示例。

另请参见: switch

 
otherwise

switch 块中的默认语句,当没有其他 case 语句与输入匹配时执行。

另请参见: switchcase

 
endswitch

标记 switch 块的结束。

参见 switch 的示例。

另请参见: switch

 
try

开始一个 try-catch 块。

如果在 try 块内发生错误,则会运行 catch 代码,并且执行将在 catch 块之后继续(但通常建议在清理完成后使用 lasterr 函数重新抛出错误)。

另请参见: catchunwind_protect

 
catch
catch value

开始 try-catch 块的清理部分。

另请参见: try

 
end_try_catch

标记 try-catch 块的结束。

另请参见: trycatch

 
unwind_protect

开始一个 unwind_protect 块。

如果在 unwind_protect 块的第一部分发生错误,在抛出错误之前会先执行 unwind_protect_cleanup 块中的命令。如果没有发生错误,unwind_protect_cleanup 块仍然会执行。换句话说,无论 unwind_protect 块中的操作成功还是失败,unwind_protect_cleanup 代码都会保证被执行。

另请参见: unwind_protect_cleanuptry

 
unwind_protect_cleanup

开始 unwind_protect 块的清理部分。

另请参见: unwind_protect

 
end_unwind_protect

标记 unwind_protect 块的结束。

另请参见: unwind_protect

迭代结构:

 
for i = range

开始一个 for 循环。

for i = 1:10
  i
endfor

另请参见: parfordowhile

 
endfor

标记 for 循环的结束。

参见 for 的示例。

另请参见: for

 
while (cond)

开始一个 while 循环。

条件 cond 为真(true)的条件是:它不为空且所有值均为非零。

i = 0;
while (i < 10)
  i++
endwhile

另请参见: doendwhileforuntil

 
endwhile

标记 while 循环的结束。

参见 while 的示例。

另请参见: dowhile

 
do

开始一个 do-until 循环。

这与 while 循环的不同之处在于循环体至少执行一次。

i = 0;
do
  i++
until (i == 10)

另请参见: foruntilwhile

 
until (cond)

结束一个 do-until 循环。

条件 cond 为真(true)的条件是:它不为空且所有值均为非零。

参见 do 的示例。

另请参见: do

 
parfor i = range
parfor (i = range, maxproc)

开始一个可能并行执行的 for 循环。

parfor 循环的语法与 for 循环相同。如果您的 Octave 会话启用了并行处理池,parfor 循环的迭代将在池的工作者之间并行执行。否则,parfor 的行为将与 for 完全相同。

在并行模式下运行时,parfor 循环的迭代不保证按顺序执行,并且对于可以在循环体内执行的数据访问操作有额外的限制。

警告: 并行处理池目前在 Octave 中尚未实现;parfor 当前的行为与普通的 for 循环完全相同。

parfor i = 1:10
  i
endparfor

另请参见: fordowhile

 
endparfor

标记 parfor 循环的结束。

参见 parfor 的示例。

另请参见: parfor

 
break

退出最内层的封闭 do、while 或 for 循环。

另请参见: dowhileforparforcontinue

 
continue

跳转到最内层封闭 do、while 或 for 循环的末尾。

另请参见: breakdowhileforparfor

类定义结构:

 
classdef

开始一个 classdef 块。

另请参见: propertiesmethodseventsenumeration

 
endclassdef

标记 classdef 定义的结束。

另请参见: classdef

 
properties

在 classdef 定义中标记属性块的开始。注意,函数 "properties" 是一个列出 classdef 类或对象属性的函数。

另请参见: endproperties

 
endproperties

标记 classdef 定义中属性块的结束。

另请参见: properties

 
methods

在 classdef 定义中标记方法块的开始。注意,函数 "methods" 是一个列出类或对象方法的函数。

另请参见: endmethods

 
endmethods

标记 classdef 定义中方法块的结束。

另请参见: methods

 
events

在 classdef 定义中开始一个事件块。

 
endevents

标记 classdef 定义中事件块的结束。

另请参见: events

 
enumeration

在 classdef 定义中开始一个枚举块。

 
endenumeration

标记 classdef 定义中枚举块的结束。

另请参见: enumeration

执行环境:

 
__FILE__

当词法分析器识别到 "__FILE__" 关键字时,它会返回一个字符数组,其中包含正在执行的文件的完整名称和路径。如果从命令行调用,"__FILE__" 将返回 "stdin"

另请参见: __LINE__

 
__LINE__

当词法分析器识别到 "__LINE__" 关键字时,它会返回一个数值,其中包含正在执行的函数或文件的当前输入行号。如果从命令行调用,"__LINE__" 将返回 1

另请参见: __FILE__


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4