相关疑难解决方法(0)

scala - 泛型中的任何vs下划线

Scala中以下泛型定义之间有何不同:

class Foo[T <: List[_]]
Run Code Online (Sandbox Code Playgroud)

class Bar[T <: List[Any]]
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我他们差不多,但后者更明确.我发现前者编译的情况,但后者不编,但不能指出确切的区别.

谢谢!

编辑:

我可以把另一个扔进去吗?

class Baz[T <: List[_ <: Any]]
Run Code Online (Sandbox Code Playgroud)

generics scala covariance existential-type any

68
推荐指数
2
解决办法
1万
查看次数

Scala Set [_] vs Set [Any]

我有以下代码行:

case set: Set[Any] => setFormat[Any].write(set)
Run Code Online (Sandbox Code Playgroud)

但是,编译器会发出警告:

非变量类型参数类型模式中的任何类型scala.collection.Set [Any]未选中,因为它被擦除消除[warn]

很公平.

所以我改变了我的路线:

case set: Set[_] => setFormat[Any].write(set)
Run Code Online (Sandbox Code Playgroud)

现在我收到一个错误:

[错误]发现:scala.collection.Set [_]

[error] required:scala.collection.Set [Any]

Q1.这两者有什么区别?

然后我将我的代码更改为以下内容:

case set: Set[_] => setFormat[Any].write(set.map(s => s))
Run Code Online (Sandbox Code Playgroud)

现在很高兴没有任何错误或警告.

Q2.这为什么有用?

scala

5
推荐指数
1
解决办法
194
查看次数

标签 统计

scala ×2

any ×1

covariance ×1

existential-type ×1

generics ×1