Я уже знаю, что:
-
<:
- это ограничение типа синтаксиса Scala - while
<:<
- тип, который использует Scala неявный, чтобы достичь типа contrait
например:
object Test {
// the function foo and bar can have the same effect
def foo[A](i:A)(implicit ev : A <:< java.io.Serializable) = i
foo(1) // compile error
foo("hi")
def bar[A <: java.io.Serializable](i:A) = i
bar(1) // compile error
bar("hi")
}
но я хочу знать, когда нам нужно использовать <:
и <:<
?
и если мы уже имеем <:
, зачем нам <:<
?
спасибо!