クラス関数とメソッドのためのコーダーフレンドリーなシンタックス

Deeplからの自動翻訳

コードの中で$1、$2、$nの変数を使うと、コードが読みにくくなるだけでなく、人間の脳はこれらの変数が何に対応しているかを覚えるのが難しいため、混乱が生じる可能性があります。解決策は、わかりやすい名前の変数を作り、その変数に$1、$2、$nの値を代入することです。

4D v18 R5では、宣言時にパラメータに名前を付けることができるようになったという朗報があります。

  • プロジェクトメソッド
  • トリガー
  • データベースメソッド
  • フォームメソッド
  • クラスのコンストラクタ
  • クラスの関数

それでは、見てみましょう。

4D v18 R4 では、変数の宣言に新しいシンタックスを紹介しました。

var $name :Text
var $birthdate :Date
var $file :4D.File

メソッドと関数の新しい構文は非常によく似ています。

クラスに対する新しい宣言

関数名の後に、セミコロンで区切られた様々な入力パラメータを括弧で囲んで追加します。

Class Constructor($firstname:Text;$lastname:Text; $birthdate:Date)
This .lastNamecity:=$lastname
This .firstName:=$firstname
This .birthdate:=$birthdate

Function setAdress ($streetNumber:Text;$streetName :Text;$:Text)
This .streetNumber:=$streetNumber
This .streetName:=$streetName
This .city:=$city

出力パラメータは、入力パラメータと同じように「>」記号、名前、型を追加するだけです。

Function getFullname -> : := . +" "+ ( . ) ( : ) -> : :="@"+ .+":"+$fullname Text
$fullnameThisfirstNameUpperThislastName

Function sendMessage$text Text $message Text
$messageThisfirstname$text

メソッドの新しい宣言

同じ原理で、新しいキーワードを使ったメソッドもあります。 #DECLARE.

  • highlightRow” プロジェクトメソッドを使った例です。

#DECLARE($listboxName:Text;$rowNum:Integer)
LISTBOX SELECT ROW (*;$listboxName;$rowNum)

  • 例として On Web Authenticationデータベースメソッドを使用した例です。

#DECLARE

($url:Text;$header:Text;\
$BrowserIP :Text;$ServerIP:Text;\
$user :Text;$password:Text)\
->$RequestAccepted:Boolean$entitySelection :=ds.User.query("login=:1";$user)
// Check hash password...
// ...

デバッガ

パラメータの名前は、デバッガーのコールチェーンペインにも表示されます。以下は、クラス関数の例です。

ボーナス

この新しい構文を使うのにもう一つ理由が必要な場合は、下の画像を見てください。そうです。関数の宣言は、4Dコマンドの場合とまったく同じようにステータスバーに表示されます。

blank

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