Generics 识别并描述Scala';s泛型类型约束
我已经看到了Generics 识别并描述Scala';s泛型类型约束,generics,scala,Generics,Scala,我已经看到了:,S:T意味着S是T的一个超类型,一个 S这里有两种不同的野兽,但它们都被称为“边界”,而不是“约束” 首先是类型边界: :-下限类型 这些基本上与java中的super和extensed相同,并且实际上会在生成的字节码中进行编码,这有利于互操作:) 然后是语法糖: 您可能需要添加SS,另外还有上下文边界:S:T。请参见Scala 2.11中的BTW视图边界。请参见。从…开始。我认为这在解释类型和视图边界方面做得很好。我喜欢这个解释,可能是Hi@Kevin wright的重复
:
,S:T
意味着S
是T
的一个超类型,一个
S这里有两种不同的野兽,但它们都被称为“边界”,而不是“约束”
首先是类型边界:
:
-下限类型
这些基本上与java中的super
和extensed
相同,并且实际上会在生成的字节码中进行编码,这有利于互操作:)
然后是语法糖:
您可能需要添加SS,另外还有上下文边界:S:T
。请参见Scala 2.11中的BTW视图边界。请参见。从…开始。我认为这在解释类型和视图边界方面做得很好。我喜欢这个解释,可能是Hi@Kevin wright的重复,为什么你说它不是一个约束?那么,什么是约束?
def fn[A <% B](arg: A) = ... //sugared
def fn[A](arg: A)(implicit ev: A => B) = ... //unsugared
def fn[A : Numeric](arg: A) = ... //sugared
def fn[A](arg: A)(implicit ev: Numeric[A]) = ... //unsugared