Scala中隐式参数的应用与类型约束
1. 隐式用户会话参数示例
在实际应用中,隐式用户会话参数可能包含授权令牌,这些令牌用于控制是否可以代表用户调用某些API操作,或者限制数据的可见性。例如,在构建用户界面的菜单时,有些菜单项只有在用户登录后才会显示,而有些则只有在用户未登录时才会显示:
def createMenu(implicit session: Session): Menu = {
val defaultItems = List(helpItem, searchItem)
val accountItems =
if (session.loggedin()) List(viewAccountItem, editAccountItem)
else List(loginItem)
Menu(defaultItems ++ accountItems)
}
2. 约束允许的实例
当我们有一个带参数化类型的方法,并且想要约束可用于类型参数的允许类型时,有不同的处理方式。
- 存在共同超类型的情况 :如果我们允许的类型都是某个共同超类型的子类型,那么可以使用面向对象的技术,避免使用隐式参数。例如,在实现资源管理器时:
trait Closable {
def close(): Unit
}
object manage {
def apply[R <: Closable, T](resource: => R)(f
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



