私は最初の入力/ラケット アプリケーションを作成しています。これは、前夜の睡眠時間、食べた量、コーヒーを何杯飲んだかなど、1 日に関する統計的な質問をする cli アプリケーションです。 . アプリケーションは、最初に質問を表示し、関数を介してユーザー入力を待機することでこれを行いますread
。収集された情報は、事前定義されたフィールドに入れられstruct
ます。
は次のstruct
ようになります。
(struct: day-stats
([user-id : Integer]
;; ... 10 more Integer fields
))
これに対する私のアプローチは、最初に各フィールドのデフォルト値 0 で構造体を初期化し、次にstruct-copy
関数を使用してユーザーが入力した情報で構造体の「インスタンス」を更新することです。
それは私を質問に導きます.最もエレガントな方法でデフォルト値で構造体を初期化するにはどうすればよいですか? コンパイル/解析中に次のようなコードを作成するマクロを作成しますか?
(day-stats 0 0 0 0 0 0 0 0 0 0 0)
それとも、構造体のある種のプロパティを読み取ることによってこれを行うことができるマクロが既にありますか?
編集:
ドキュメントをもう少し調べたところ、フィールドを自動設定するために構造体に設定できるプロパティがあることがわかりました。ただし、これが で可能かどうかはわかりませんtyped/racket
。での表示は次のracket
とおりです。
(struct day-stats
([user-id #:auto]
;; ... 10 more Integer fields
)
#:auto-value 0)