20

Scala では、次のようにオブジェクトを宣言できます。

class Thing

object Thingy extends Thing

"Thingy"Scala で (オブジェクトの名前)を取得するにはどうすればよいですか?

Lift (Scala の Web フレームワーク) にはこれができると聞いたことがあります。

4

4 に答える 4

31

case object単なる an ではなくとして宣言すると、自動的に特性objectが拡張され、メソッドを呼び出してオブジェクトの名前を取得できます。ProductproductPrefix

scala> case object Thingy
defined module Thingy

scala> Thingy.productPrefix
res4: java.lang.String = Thingy
于 2012-10-21T18:55:03.750 に答える
3

どの方法が適切かはわかりませんが、これは Scala リフレクションによって実現できます。

implicitly[TypeTag[Thingy.type]].tpe.termSymbol.name.toString
于 2015-04-04T05:21:06.937 に答える