在 scala 中使用上下文边界,您可以执行以下操作
trait HasBuild[T] {
def build(buildable: T): Something
}
object Builders {
implict object IntBuilder extends HasBuild[Int] {
override def build(i: Int) = ??? // Construct a Something however appropriate
}
}
import Builders._
def foo[T: HasBuild](input: T): Something = implicitly[HasBuild[T]].build(1)
val somethingFormInt = foo(1)
或者干脆
val somethingFromInt = implicitly[HasBuild[Int]].build(1)
我如何表达在范围内Seq
具有适当隐式HasBuild
对象的任何元素的类型?如果没有太多的魔法和外部库,这可能吗?
Seq[WhatTypeGoesHere]
- 我应该能够HasBuild
为每个元素找到合适的
这显然不能编译:
val buildables: Seq[_: HasBuild] = ???