除了上述函数语法(即,调用类似函数的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
可以从用户指定为之间的减法运算arg1
和arg2
然而,前两个也可能是对函数的命令语法调用arg1
,在第一种情况下有参数-
和arg2
,在第二种情况下有参数-arg2.
Octave根据以下规则使用空格来解释这些表达式:
arg1 arg2 arg3 ... argn
arg1+arg2 arg1&&arg2||arg3 arg1+=arg2*arg3
7 -arg2 pi+ arg2 j * arg2 -arg3
arg1 -arg2 arg1 &&arg2 ||arg3 arg1 +=arg2*arg3
注1:如果一个特殊值的命名常量被重新定义为avariable,解释器仍将使用functionsyntax处理该语句。
注意2:试图将变量用作arg1
在作为命令处理的命令中,语法将导致错误。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2