可変長引数関数の書き方への新しいアプローチ

多くの方は、不定数の引数を受け取ることができるメソッドや関数を使用することに慣れていることでしょう。こういった関数は一般的に可変長引数関数または可変長関数などと呼ばれます。

4D v20 R3 では、皆さんの開発のしやすさを向上させるために、エリプシス(省略記号)を導入することで、これらのメソッドの宣言を合理化し、コードをよりわかりやすく、作業しやすくしました。

関数やメソッドの宣言で、最後の引数に”… “を使用することで、引数の数が不定であることを指定できるようになりました。この記号には、補足として型を指定することもできます。ここで指定された型を使用して、4Dは関数やメソッドが受け取る引数の型をチェックします。

例えば、引数として渡されたすべての数値を合計するSumNumbers メソッドを作成したい場合を考えます:

#DECLARE( ...  : Real) : Real
var $number; $total : Real
var $i : Integer

For ($i; 1; Count parameters)
	$total+= ${$i}
End for 

return $total

このメソッドは、不定数の引数を渡して呼び出すことができます:

$total1:=SumNumbers // 0 を返す

$total2:=SumNumbers(1; 2; 3; 4; 5) // 15 を返す

このシンタックスを使用した場合では、4Dは引数の型をチェックします:

$total3:=SumNumbers(1; 2; "test"; 4; 5) // エラーを返す

そのため、どのような型でも受け入れたい場合は型を指定せずに”… “を使用してください:

function AcceptAllType(...)
var $value : variant

// Copy parameters() returns a collection with all the parameters
For each ($value; Copy parameters())
   // your code here
End for each 

この新しいシンタックスを活用して、柔軟な関数やメソッドを存分に作成してください。また分からないことがあれば是非ドキュメンテーションを参照して下さい!

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。