パラメータをシームレスに管理する方法

Deeplからの自動翻訳

関数やメソッドの宣言では、そのパラメータを明示的に定義します。そして、その関数やメソッドを呼び出す際に、いくつかのパラメータが省略可能であれば、より少ない数のパラメータを渡すことができます。あるいは、${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)

次へ

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

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