1

私がscalaでtypeを使用する方法を理解してみてください:

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 に答える