我知道我可以定义鸭子输入generics
如下
trait MyTrait[A <: {def someMethod(key: String): String}]
但是我不想string
在我的trait
定义中指定整个大。
我怎样才能把它分成两个(我希望我能拥有的):
type A = B <: {def someMethod(key: String): String}
trait MyTrait[A]
我知道我可以定义鸭子输入generics
如下
trait MyTrait[A <: {def someMethod(key: String): String}]
但是我不想string
在我的trait
定义中指定整个大。
我怎样才能把它分成两个(我希望我能拥有的):
type A = B <: {def someMethod(key: String): String}
trait MyTrait[A]
你可以做:
type B = { def someMethod(key: String): String }
trait MyTrait[A <: B]
事实上,当结构类型超过 50 个字符时,一些 Scala 风格指南建议使用这种细分。 这是 Scala 文档中的一个:
如果结构类型的长度少于 50 个字符,则应在一行上声明它们。否则,它们应该分成多行并(通常)分配给它们自己的类型别名
您不能将绑定的类型A <: B
本身分配给类型别名,因为它不是类型,而是对 的泛型参数的约束MyTrait
。您可以在此处阅读有关类型边界的更多信息。