1

尝试了解如何在 scala 中使用类型:

object TypeSample extends App {

  type MyParams = Map[Int, String]

  def showParams(params: MyParams) = {
    params.foreach(x => x match { case (a, b) => println(a + " " + b) })
  }

  //val params = MyParams( 1 -> "one", 2 -> "two")
  val params = Map( 1 -> "one", 2 -> "two")

  showParams(params)

}

此行引发编译异常:“无法解析符号'MyParams'”

//val params = MyParams( 1 -> "one", 2 -> "two")

为什么?我不能像这样使用“类型”吗?

4

2 回答 2

4

Map( 1 -> "one", 2 -> "two") 意味着 Map.apply( 1 -> "one", 2 -> "two")Map是一个单例对象。

试试这个:

val MyParams = Map.apply[Int, String] _
于 2012-12-16T20:33:25.800 回答
4

因为MyParams只是 type 的别名Map[Int, String]。要完成这项工作,您必须添加一个工厂,例如

object MyParams {
  def apply(params: (Int, String)*) = Map(params: _*)
}
于 2012-12-16T20:34:52.157 回答