http://d.hatena.ne.jp/tonfabeem/20131110/1384044294 を参考に。ちょっとだけ改変。
//Array以外は動くpメソッド
def p[T](t: T)(implicit mt: Manifest[T] = null) = {
println("%s: %s".format(t,
if (mt == null) "<?>"
else mt.toString)
)
}
として、
val l1 = List(1, 2, 3)
val l2 = List(1, "hoge", l1)
p(l2)
とかすると
List(1, hoge, List(1, 2, 3)): scala.collection.immutable.List[Any]
こんな風にコンソールに出て幸せになれる。
リンク元にはArrayの時の解決策も載ってるので、型情報を調べてArrayの時はそっちの処理にしようかと思ったら、実行時に型情報取るのむちゃくちゃ大変っぽいので断念。
2.10以降はtagTypeで取るらしいけど最初から処理系にこれとっといてね、って指示しないと行けないのでutilがそれを前提にするのは辛いかなと。