next up previous contents
Next: 8. 変数/関数のライフタイムとスコープ Up: 7.7 可変引数 Previous: 7.7.1 可変引数サポート - 特殊変数

  
7.7.2 可変引数サポート - 特殊演算子

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 ;
}}
}

next up previous contents
Next: 8. 変数/関数のライフタイムとスコープ Up: 7.7 可変引数 Previous: 7.7.1 可変引数サポート - 特殊変数
Tetsuo Ono
1998-11-05