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. 约束允许的实例
当有一个带参数化类型的方法,并且想要约束可用于类型参数的允许类型时,有不同的处理方式。
- 有共同超类型的情况 :如果允许的类型都是某个共同超类型的子类型,可以使用面向对象技术,避免使用隐式参数。例如,实现资源管理器时:
object manage {
def apply[R <: { def close():Unit }, T](resource: => R)(f: R => T) = {...}
...
}
</
超级会员免费看
订阅专栏 解锁全文
24

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



