11.13 命令语法和函数语法

除了上述的函数语法(即像 fun (arg1, arg2, …) 这样调用函数),还可以使用命令语法来调用函数(例如像 fun arg1 arg2 … 这样调用函数)。在这种情况下,所有参数都作为字符串传递给函数。例如:

my_command hello world

等价于

my_command ("hello", "world")

命令调用的通用形式为

cmdname arg1 arg2 ...

直接转换为

cmdname ("arg1", "arg2", ...)

如果要在命令语法中将包含空格的参数传递给函数,可以使用(双)引号。例如:

my_command "first argument" "second argument"

等价于

my_command ("first argument", "second argument")

任何接受字符串输入参数的函数都可以用作命令。例如:

upper lower_case_arg
   ⇒    ans = LOWER_CASE_ARG

由于参数作为字符串传递给对应的函数,因此无法传递存储在变量中的输入参数。在这种情况下,必须使用函数语法来调用命令。例如:

strvar = "hello world";
upper strvar
   ⇒    ans = STRVAR
upper (strvar)
   ⇒    ans = HELLO WORLD

此外,不能使用命令语法将函数的返回值赋值给变量。只有第一个返回值被赋值给内置变量 ans。如果要将命令的输出参数赋值给一个变量,或者需要返回函数的多个输出参数,则必须使用函数语法。

需要注意的是,混合使用命令语法和二元运算符可能会与使用函数语法的数学和逻辑表达式产生歧义。例如,以下三个语句:

arg1 - arg2
arg1 -arg2
arg1-arg2

可能被用户理解为 arg1arg2 之间的减法运算。然而,前两个也可能被理解为对函数 arg1 的命令语法调用——第一种情况带有选项 -arg2,第二种情况带有选项 -arg2

Octave 使用空格根据以下规则来解释此类表达式:

注1:如果某个具有特殊值的命名常量已被重新定义为变量,解释器仍然会按函数语法处理该语句。

注2:尝试在命令语法中将变量用作 arg1 将会导致错误。


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

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