文字列、ブール値などの多くのフィールドを持つクラスが必要であり、クラスが構築されるときに、各フィールドに関連付けられたフィールド名を持ち、フィールドを検証したい (文字列の正規表現を使用)。理想的には、パラメーターが特定の基準を満たす必要があることをコンストラクターで指定したいだけです。
方法のサンプルコード:
case class Data(val name: String ..., val fileName: String ...) {
name.verify
// Access fieldName associated with the name parameter.
println(name.fieldName) // "Name"
println(fileName.fieldName) // "File Name"
}
val x = Data("testName", "testFile")
// Treat name as if it was just a string field in Data
x.name // Is of type string, does not expose fieldName, etc
これを達成するエレガントな方法はありますか?
編集:私が求めているものを明確に理解できたとは思いません。いくつかの文字列パラメーターを持つクラスがあります。これらの各パラメーターは特定の方法で検証する必要があり、各パラメーターに関連付けられた文字列 fieldName も必要です。ただし、パラメーターを通常の文字列のように処理できるようにしたいと考えています (例を参照)。
ロジックを Data にコーディングし、各パラメーターの Data コンパニオン オブジェクトの apply メソッドとしてコーディングすることもできましたが、もっと一般的なものを望んでいました。