gpt4 book ai didi

scala - 方法参数是隐含的吗? - 使用 scala 2.10 反射

转载 作者:行者123 更新时间:2023-12-02 07:06:01 24 4
gpt4 key购买 nike

给定一个反射方法:

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+ 中)?

最佳答案

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 方法。首先,这是一种一致的测试方式,因为只有十几个公共(public)标志,但要测试的东西更多(例如 isStableisSynthetic)。其次,标志比看起来更棘手(例如,多个标志名称可能对应于标志掩码中的相同位),因此 isXXX 方法提供了更好的封装。

关于scala - 方法参数是隐含的吗? - 使用 scala 2.10 反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com