我只是写一些Scala代码:如何理解代码`VAL X:猫[_ <:字符串] =新的猫[字符串]`
class Cat[T]
val x: Cat[_ <: String] = new Cat[String]
它可以被编译,但我不很好理解。
你可以看到我宣布的x
类型为Cat[_ <: String]
,这意味着
Cat[ T forSome { type T <: String; }]
但是,我能做些什么与x
当它有这种特殊类型的?是否有任何条件需要我这样申报x
以备后用?
你可以用'x'做任何你可以用'Cat [T]'做的事情,其中'T'是'String'(加上更多)。我在Scala的这方面并不太强,但你应该看看这个页面(http://blogs.atlassian.com/2013/01/covariance-and-contravariance-in-scala/)。也考虑改写你的问题。这是不是很清楚你问什么。 – Andrey