オブジェクトに対して独自のメソッドを書く

Deeplからの自動翻訳

新しいコマンドを使えば、コードの中で数式を自由に使うことができます。数式をオブジェクトにカプセル化し、必要なときに呼び出せるようになりました。もう、コードをテキストで書く必要はありません。コマンドの中で数式を渡すだけでいいのです。コードがテキストでないため、シンタックスハイライトやコードエディタの他のすべての高度な機能の恩恵を受けることができます!これは素晴らしい追加機能です。

数式をオブジェクトにカプセル化する

という Formulaコマンドを使えば、数式をオブジェクトにカプセル化するのはとても簡単です。

$f:=Formula(ALERT("Hello world"))

もちろん、数式はオブジェクトにカプセル化されているので、オブジェクトのプロパティにカプセル化し、独自のカプセル化されたオブジェクトメソッドを作成することができます。

$f:=New object
$f .message:=Formula(ALERT("Hello world"))
$f .message() // Display alert dialog box with the message "Hello world"

数式にパラメータを渡したい場合は、メソッドと同じように $1, $2 … を使用します。

$f:=New object
$f .message:=Formula(ALERT("こんにちは "+$1))
$f .message("ジョン")
// Display alert dialog box with the message "Hello John"

また、オブジェクトの属性の値を使用したい場合にも Thisコマンドで解決できます。

$f:=New object
$f .text:="Hello World"
$f .message:=Formula(ALERT(This.text))
$f .message()
// Display alert dialog box with the message "Hello world"

最後に、メソッドを数式として使用することができます。

$person:=New object
$person .firstName:="John"
$person .lastName:="Smith"
$person .greeting:=Formula(Greeting )
$g :=$person.greeting("hello")
// $g:="hello John Smith"
$g:=$person.greeting("hi")
// $g:="hi John Smith"

コマンドを使えば Greeting メソッドを使用します。

$0:=$1+" "+This.firstName+" "+This.lastName

の使い方の例は、このHDIに掲載されています。 Formulaの使い方の例は、この HDI の中にあります。

HDI_NewFormula

計算式を呼び出す

また、数式オブジェクトを他のオブジェクトのプロパティとして設定せずに実行する場合は call() と apply() メソッドを使うことで、他のオブジェクトのプロパティとして設定することなく、数式オブジェクトを実行することができます。

$f:=Formula(ALERT(String($1+" "+$2))
$f .call(null; "Hello"; "world")
$f .apply(null;New collection ("Hello"; "world"
) //formula.apply object methods

文字列からオブジェクトに数式をカプセル化する

テキスト版の数式を使って、メソッドを作成する方法があります。 Formula from stringコマンドで実行できます。

$textFormula:=Request("Please type a formula")
If (ok=1)
$f :=Formula from string($textFormula)
ALERT ("Result = "+String($f.call ()
)”)
End if

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