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
メソッドはより適切なカプセル化を提供します。