コードの繰り返しパターンに気づき、構造型を試してみるのは良い考えかもしれないと思いました。私はその章を読みました;-)、しかし私はそれについて頭を完全に理解することができません。次のコードを検討してください。
def link(user: User, group: Group) = {
UserGroupLinks.insert((user.id, group.id))
}
def link(group: Group, role: Role) = {
GroupRoleLinks.insert((group.id, role.id))
}
def link(user: User, role: Role) = {
UserRoleLinks.insert((user.id, role.id))
}
それを次のようなものに組み合わせるにはどうすればよいですか?
def link(A <: ...something with an id, B<:... something with and id) = {
(A, B) match {
case (u: User, g: Group) => UserGroupLinks.insert((user.id, group.id))
case (g: Group, r: Role) => GroupRoleLinks.insert((group.id, role.id))
case (u: User, r: Role) => UserRoleLinks.insert((user.id, role.id))
case _ =>
}
}