独自のメソッドをオブジェクトにカプセル化する

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

フォーミュラをオブジェクトにカプセル化する

Formulaコマンドを使えば、フォーミュラをオブジェクトにカプセル化するのはとても簡単です:

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

フォーミュラをオブジェクトにカプセル化できるということは、オブジェクトのプロパティに格納し、独自のカプセル化されたオブジェクトメソッドを作成することができます:

$f:=New object
$f.message:=Formula(ALERT("Hello world"))
$f.message() // メッセージ "Hello world" を表示するアラートを出します

フォーミュラに引数を渡したい場合は、メソッドと同じように $1, $2 … を使用します:

$f:=New object
$f.message:=Formula(ALERT("Hello "+$1))
$f.message("John")
// メッセージ "Hello John" を表示するアラートを出します

また、オブジェクトの属性の値を使用したい場合には、This コマンドを使います:

$f:=New object
$f.text:="Hello World"
$f.message:=Formula(ALERT(This.text))
$f.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

Formula の例題については、HDI もご確認ください:

HDI: メソッドのオブジェクト化

フォーミュラを呼び出す

また、フォーミュラオブジェクトは、call() や apply() メソッドを使うことで、他のオブジェクトのプロパティとして格納せずとも、を実行することができます。

$f:=Formula(ALERT(String($1+" "+$2))
$f.call(null;"Hello";"world")
$f.apply(null;New collection("Hello";"world")) //formula.apply オブジェクトメソッド

文字列からフォーミュラをオブジェクトにカプセル化する

テキスト形式のフォーミュラを使いたい場合は、Formula from stringコマンドで実行できます。

$textFormula:=Request("フォーミュラを入力してください")
 If(ok=1)
    $f:=Formula from string($textFormula)
    ALERT("結果: "+String($f.call()))
 End if

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