Cmm では可変引数のサポートをするための、特別な単項演算子$?が提供されています。
$? は、関数内でのみ利用できる演算子です。識別子にのみ有効で、
$? <識別子>
という形式で用い、識別子で指定される引数に、呼び出し元から実際に値が渡 されているかについての真偽値を返します。$? 演算子は、識別子のみに有効 で、識別子のかわりに式を書くことはできません。
例えば、
func VarArgsFunc (firstarg, secondarg) {
if ($?firstarg)
println ("firstarg a is available") ;
if ($?secondarg)
println ("secondarg a is available") ;
}
という関数を、VarArgsFunc() と呼び出した場合、関数 VarArgsFunc で、$?firstarg、$?secondarg の どちらの値も偽となります。
VarArgsFunc(10) と呼び出した場合は、$?firstarg の値は真、$?secondarg の値は偽となります。
VarArgsFunc(10,20)と呼び出した場合は、$?firstarg、$?secondarg どち らの値も真となります。
$? 演算子を使うことで、下記のように引数省略時のデフォルト値の設定をすることがで きます。
func FuncExample (arga, argb, argc) {
if (! $?arga) {{
var arga = 10 ;
}}
if (! $?argb) {{
var argb = 20 ;
}}
if (! $?argc) {{
var argc = 10 ;
}}
}