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
相同,并且实际上会在生成的字节码中进行编码,这有利于互操作:)

然后是语法糖:


  • 您可能需要添加
    S
    S,另外还有上下文边界:
    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