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