返ってくる型がわからないときは、Anyを使う?

昨日、5/14と書いた以下のエントリでは、関数に指定する型パラメータで悩んでいたけど、結局戻ってくる値がわからないのであればAnyを返す、というのでちゃんと動くようにできた。

僕が2015/5/14に書いた型パラメータに関するエントリがすごく間違っている気がする - 趣味プログラマがまれになんかしたことの記録
共変とか反変とかわからないので躓いている - 趣味プログラマがまれになんかしたことの記録

case class K[+A](a:A) {
  val list = List[A](a)
}

def returnListOfK(filename:String):List[K[Any]] = {
  val data = scala.io.Source.fromFile(filename).getLines.toArray
  val alphas = """[a-z]+""".r
  val nums = """\d+""".r
  val ary = data.map{ 
    _ match {
      case alphas(_*) => K[String]("String")
      case nums(_*) => K[Int](0)
      case _ => K[Int](-1)
    }
  }
  ary.toList
}

val listK = returnListOfK(args(0))
println(listK)
println(listK(0).getClass.getSimpleName)

関数の型パラメータは、与える引数の型を指定する際に必要ということのようで、すなわち戻り値の型が問題となる場合は型パラメータは指定しない。そして、戻り値の型が決まってない場合はAnyで良いんじゃないかな?(なんか間違ってる気もするけど)