【问题标题】:Type mismatch between Any and String in ScalaScala中Any和String之间的类型不匹配
【发布时间】: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


【解决方案1】:

数组的参数类型不变,这意味着String 是Any,但Array[String] 不是Array[Any]。

def foo[T](x: Array[T]) 或 def foo(x: Array[_]) 都可以。

【讨论】:

猜你喜欢
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 2011-07-05
  • 1970-01-01
  • 2021-11-19
  • 2018-09-23
  • 2016-06-14
相关资源
最近更新 更多