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。コマンドの出力引数を変数に割り当てる必要がある場合、または関数の複数の出力引数を返す必要がある場合は、関数構文を使用する必要があります。
コマンド構文と二項演算子を混在させると、関数構文を使用する数学式や論理式で明らかな曖昧さが生じる可能性があることに注意してください。たとえば、次の3つのステートメントはすべて
arg1 - arg2 arg1 -arg2 arg1-arg2
は、ユーザーが arg1との間の減算演算として意図したものである可能性がありますarg2。ただし、最初の 2 つは、関数 へのコマンド構文呼び出しとして意図されている可能性もあります。arg1最初のケースではオプション と が使用され-、arg22 番目のケースではオプション が使用されます。 -引数2。
Octave は空白を使用して、次の規則に従ってこのような式を解釈します。
演算子のないプレーン シンボルで構成され、空白のみで区切られたステートメントは、常にコマンド構文として扱われます。
arg1 arg2 arg3 ... argn
空白のないステートメントは常に関数構文として扱われます。
arg1+arg2 arg1&&arg2||arg3 arg1+=arg2*arg3
最初のシンボルが定数(または特殊な値を持つ名前付き定数 pi、i、I、j、J、e、NaN、または Inf)で、その後にバイナリ演算子が続く場合、2 番目のシンボルの後に続く空白や内容に関係なく、ステートメントは関数構文として扱われます。
7 -arg2 pi+ arg2 j * arg2 -arg3
最初のシンボルが関数または変数であり、演算子と 2 番目のシンボルを区切る空白がない場合、ステートメントはコマンド構文として扱われます。
arg1 -arg2 arg1 &&arg2 ||arg3 arg1 +=arg2*arg3
その他の空白の組み合わせでは、ステートメントは関数構文として扱われます。
注 1: 特殊な値を持つ名前付き定数が変数として再定義されている場合でも、インタープリタは関数構文を使用してステートメントを処理します。
注 2: 処理中のコマンド内で変数をarg1コマンド構文として使用しようとすると、エラーが発生します。