2

反映された方法を考えると:

scala> val sortMethod = typeOf[::[_]].member(newTermName("sorted"))
sortMethod: reflect.runtime.universe.Symbol = method sorted

scala> sortMethod.typeSignature
res122: reflect.runtime.universe.Type = [B >: A](implicit ord: scala.math.Ordering[B])Repr

メソッドに暗黙のパラメーターがあるかどうかを確認する最良の方法は何ですか(scala 2.10-M4 +)?

4

2 に答える 2

6
scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> val sortMethod = typeOf[::[_]].member(newTermName("sorted")).asMethod
sortMethod: reflect.runtime.universe.MethodSymbol = method sorted

scala> sortMethod.params // `params` has been added only a few days ago
res0: List[List[reflect.runtime.universe.Symbol]] = List(List(value ord))

scala> sortMethod.params(0)(0).asTerm.isImplicit
res2: Boolean = true

scala> sortMethod.params(0)(0) hasFlag Flag.IMPLICIT
res3: Boolean = true

どちらを選ぶかと聞かれたら、方法を使うことをお勧めしisXXXます。まず第一に、これは一貫したテスト方法です。公開フラグは1ダースほどしかないためですが、テストするものはもっとたくさんあります(例:isStableまたはisSynthetic)。第2に、フラグは見た目よりも扱いにくいため(たとえば、複数のフラグ名がフラグマスクの同じビットに対応する場合があります)、isXXXメソッドはより適切なカプセル化を提供します。

于 2012-08-06T23:16:53.757 に答える
2

今のところ、私はあなたができるとは思いません。isImplicit6日前に追加されたので、ナイトリービルドまたは次のマイルストーンリリースで追加できるはずです。

于 2012-08-06T21:57:39.943 に答える