我有以下case类,我想为它创建一个表单映射函数。该类使用自己类型的对象。如何为这种情况编写映射函数?
case class User (
name:String,
age:Int,
female:Boolean,
address:Address, //this is another case class of 3 Strings
friends:List[User], //an object of its own type
spouse:Option[User]
)
到目前为止我写过这篇文章,但不知道如何处理朋友和配偶
val userForm = Form((mapping("name"->text,
"age"->number,
"female"->boolean,
"address"->mapping("fullStreet"->text,
"county"->text,
"country"->text)(Address.apply)(Address.unapply),
"friends"->list(???),
"spouse"->optional(???)
)(User.apply)(User.unapply))
答案 0 :(得分:0)
通常,类型可以帮助您在脚下拍摄自己。当你在这种情况下结束时,重新考虑你正在做的事情有时是明智的。
在这种特殊情况下,你实际上不太可能想要一个无限递归的结构,你也想要朋友的朋友的朋友等等,这可能是你的整个数据库。配偶也会产生问题,因为某些人配偶的配偶是同一个人,所以你的数据结构永远不会结束。这同样适用于朋友。当然我可以认为你是朋友而你实际上并不认为我是朋友,但这些情况是规则的例外:)
您可能想要做的是以下两种情况之一:
User
案例类的基础,并将该案例类作为{{的基础类型1}}和friends
。spouse
然后变为Friends
和Set[UserId]
一个spouse
。