【发布时间】:2016-06-02 07:09:14
【问题描述】:
免责声明:我不确定我是否真的了解类型上下文边界......或任何东西。
是否可以在 scala 中定义一个类型,它是 TypeClass 的实例,其中类型可以是 Any,只要该类型遵守类型上下文绑定。
例如我有一些类型类Printable[T]
Printable 是一个用于可以打印的东西的类型类,它作为类型上下文绑定很有用,因为我可能希望拥有可以采用任何类型的类型类,只要它是可打印的,就像这样:
class SomeContainer[T: Printable](value: T)
据我了解,集合库使用这样的类型上下文边界来处理可以排序、求和等的内容。
但我想要的是type PrintableAnyCollection = SomeCollection[_: Printable]
这是一个可以是不同类型的值的集合,只要所有这些类型都遵守类型上下文绑定,即存在与该类型对应的 Printable[T]。
TLDR:
Collection[Any] 几乎可以满足我的要求,因为它可以容纳不同的类型
Collection[T: Printable] 几乎可以满足我的要求,因为它强制集合中的东西是可打印的,但结果是集合只存储一种类型。
Collection[_: Printable] 和/或Collection[Any: Printable] 看起来像是在描述我想要的内容,但语法无效。
【问题讨论】:
标签: scala