在许多情况下,_上下文参数_的名称不必明确提及,因为它仅由编译器在其他上下文参数的合成参数中使用。 在这种情况下,您不必定义参数名称,只需提供参数类型即可。
背景
例如,这个 maximum
方法接受 Ord
类型的_上下文参数_,只是将它作为参数传递给 max
:
def maximum[A](xs: List[A])(using ord: Ord[A]): A =
xs.reduceLeft(max(ord))
在该代码中,参数名称 ord
实际上不是必需的;它可以作为推断参数传递给 max
,因此您只需声明 maximum
使用的类型 Ord[A]
而不必给它命名:
def maximum[A](xs: List[A])(using Ord[A]): A =
xs.reduceLeft(max)
上下文绑定
鉴于此背景,_上下文绑定_是一种简写语法,用于表达“依赖于类型参数的上下文参数”模式。
使用上下文绑定,maximum
方法可以这样写:
def maximum[A: Ord](xs: List[A]): A = xs.reduceLeft(max)
方法或类的类型参数 A
,有类似 :Ord
的绑定,它表示有 Ord[A]
的上下文参数。
有关上下文绑定的更多信息,请参阅 Scala 常见问题解答的 “什么是上下文绑定?” 部分。
Contributors to this page:
Contents
- 导言
- Scala 3 特性
- 为什么是 Scala 3 ?
- Scala 的味道
- Hello, World!
- The REPL
- 变量和数据类型
- 控制结构
- 领域建模
- 方法
- 头等函数
- 单例对象
- 集合
- 上下文抽象
- 顶层定义
- 总结
- 类型初探
- 控制结构
- 领域建模
- 工具
- OOP 领域建模
- 函数式领域建模
- 方法
- 方法特性
- main 方法
- 总结
- 函数
- 匿名函数
- 函数变量
- Eta 扩展
- 高阶函数
- 自定义 map 函数
- 创建可以返回函数的方法
- 总结
- 打包和导入
- Scala 集合
- 集合类型
- 集合方法
- 总结
- 函数式编程
- 什么是函数式编程?
- 不可变值
- 纯函数
- 函数是值
- 函数式错误处理
- 总结
- 类型和类型系统
- 类型推断
- 泛型
- 相交类型
- 联合类型
- 代数数据类型
- 型变
- 不透明类型
- 结构化类型
- 依赖函数类型
- 其他类型
- 上下文抽象
- 扩展方法
- Given 实例和 Using 语句
- 上下文绑定
- Given 导入
- 实现类型类
- 多元相等性
- 隐式转换
- 总结
- 并发
- Scala 工具
- 使用 sbt 构建和测试 Scala 项目
- worksheet
- 与 Java 交互
- 向 Java 开发者介绍Scala
- Scala for JavaScript Developers
- Scala for Python Developers
- 下一步去哪