【发布时间】:2014-07-13 02:46:02
【问题描述】:
我想使用 Scala 的上下文绑定模式做以下事情:
class Polynomial[T: Ring] {
def apply[X: Ring with Includes[T]](x: X): X = ...
...
}
这是一个多项式类,它要求系数是Ring T 中的元素。当将此多项式应用于元素(求值)时,参数x 的类型必须是环,T 类型的元素可以隐式转换为X 类型。例如T = Double, X = SquareMatrix。
如何在 Scala 中对泛型类型参数施加多个类型约束?
【问题讨论】:
-
这里为什么需要上下文绑定?
Ring是一个类型类?也许你需要这样的东西:def apply[X: Ring with Includes[T], T <% X](x: X): X = ...view bound ( -
@wedens 是的。 Ring 是一个类型类,旨在使 Int、Double、... 符合它。
-
所以,我的解决方案应该适用于这种情况
-
Includes的定义是什么样的? -
@sjrd trait Includes[A, B] {implicit def from(b: B): A }
标签: scala generics context-bound