【发布时间】:2015-12-03 01:31:42
【问题描述】:
def foo(x : Array[Any]) = println(x.length);
foo(Array[String]("test", "test"));
此代码将引发错误消息:
:6: error: type mismatch;
found : Array[String]
required: Array[Any]
foo(Array[String]("test", "test"))
Scala 中的所有类都直接或间接地继承自 Any 类。所以字符串是任意的。为什么我们不能将 Array[String] 传递给 foo 方法?
【问题讨论】:
-
提示:数组在其参数类型上是不变的。
String是Any但Array[String]不是Array[Any]。请改用def foo[T](x: Array[T])。 -
谢谢!@dmitry @cchantep
标签: scala type-mismatch