我注意到我的代码中的重复模式,并认为这可能是尝试结构类型的一个好主意。我已经阅读了这一章;-),但我无法完全理解它。考虑以下代码:
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 _ =>
}
}