パラメーターを簡単に管理する方法

関数やメソッドの宣言では、そのパラメーターを明示的に定義します。そして、その関数やメソッドを呼び出す際に、いくつかのパラメーターが省略可能であれば、それより少ない数の引数を渡すことができます。あるいは、${n} を使った宣言の場合、引数の数は可変です。この場合には Count Parameters コマンドを使い、引数をループさせます。このコードは完璧に動作します。それでも、ちょっと重いですね。

そこで、もっと軽い方法で引数を処理できないかとの要望にお応えして、4D v19 R5 から、新しいコマンド Copy parameters を提供します。これにより、よりエレガントで簡単な、読みやすいコードが書けるようになりました。

HDI: Copy Parameters

新コマンド

新しいコマンド Copy parameters は、関数やメソッドに渡された引数のコレクションを返します。Copy parameters コマンドに “startFrom” 引数を渡すと、”startFrom” で指定したインデックスからの要素を含むコレクションを返します。

例題

引数コレクションの利用。

たとえば、文字列と引数を連結して、順序のない HTML リストを作成します:

// クラス
Function list() -> $html : Text  
 var $value : Collection
 $value:=Copy parameters 
 $html:="<ul><li>"
 $html+=$value.join("</li><li>")
 $html+="</li></ul>"
 return $html

// メソッド
$htmlList:=$c.list("Alpha";"Bravo";"Charlie")
// $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)

次は

詳しくは、ドキュメントを参照ください。フォーラムでは、あなたのアイディアや例題を遠慮なく共有してください。

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。