関数やメソッドの宣言では、そのパラメータを明示的に定義します。そして、その関数やメソッドを呼び出す際に、いくつかのパラメータが省略可能であれば、より少ない数のパラメータを渡すことができます。あるいは、${n}を使った宣言の場合、渡されるパラメータの数は可変です。この場合 Count Parametersコマンドを使い、引数をループさせます。このコードは完璧に動作します。それでも、ちょっと重いですね。
そこで、もっと軽い方法でパラメータを処理できないかとの要望があり、それに応えました。4D v19 R5から、新しいコマンドを提供します。 Copy parametersこれにより、シームレスで、よりエレガントで、読みやすいコードを書くことができるようになりました。
新コマンド
新しいコマンドは Copy parametersは、関数やメソッドに渡されたパラメータのコレクションを返します。もし、”startFrom” パラメータを Copy parametersコマンドに ” ” パラメータを渡すと、”startFrom” インデックスからの要素を含むコレクションを返します。
使用例
パラメータをコレクションとして操作する。例えば、文字列とパラメータを連結して、順序のない HTML リストを作成します。
// Class
)
Function list $value
() -> : : := :="<ul><li>" += . ("</li><li>") +="</li></ul>" := . ("Alpha"; "Bravo"; "Charlie"$html Text
var $value Collection
Copy parameters
$html
$html$valuejoin
$html
return $html// Method
$htmlList$clist
// $htmlList: <ul><li>Alpha</li><li>Bravo</li><li>Charlie</li></ul>
最初のパラメータによって異なる関数を呼び出し、他のパラメータをこのメソッドに渡す。
Function selectTask($task:Text)
Case of
: ($task="Task1")
This .task1(Copy parameters(2))
: ($task="Task2")
This .task2(Copy parameters(2))
。End case
あるいは、apply()で他のオブジェクトの関数を呼び出し、パラメータを渡します。
Function doSomething($param:Text;$extraParameters:Variant)
This .delegate.doSomething.apply(This.delegate;Copy parameters)
次へ
詳しくは、ドキュメントをご覧ください。フォーラムでは、あなたのアイデアや事例を遠慮なく共有してください。