scala - redactar - introspeccion y observacion
¿Tiene Scala una introspección capaz de algo similar al dir() de Python? (4)
Es posible que desee algo como lo siguiente que le daría lo que necesita. En este caso, opera en una cadena, obviamente.
val testStr = "Panda"
testStr.getClass.getMethods.foreach(println)
¿Eso funciona?
Sí, ya sé que es considerado perezoso por los no pitonistas. La razón por la que pregunto es que la documentación todavía falta lamentablemente en muchas bibliotecas de Scala (por ejemplo, Scala-dbc, pero eso no es todo lo que estoy viendo), y si pudiera ver los atributos de un objeto / clase en tiempo de ejecución, podría hacerlo en menos averiguar lo que está disponible. Gracias.
Es posible que desee utilizar this pequeño ayudante para reforzar el REPL
Ese es uno de mis usos principales para REPL. Escriba el nombre del objeto, el punto y luego TAB y mostrará todos los métodos disponibles.
No es perfecto Por un lado, muestra métodos protegidos, que no estarán disponibles a menos que extiendas la clase. Por otra parte, no muestra los métodos disponibles a través de la conversión implícita.
Y, por supuesto, todos los IDE son capaces de hacer eso.
Scala no tiene una API de reflexión. La única forma de acceder a esta información es utilizar la API de reflexión de Java . Esto tiene la desventaja de que la estructura puede cambiar como la forma en que Scala está representada en las clases Java y las interfaces pueden cambiar en el futuro.
scala> classOf[AnyRef].getMethods
res0: Array[java.lang.reflect.Method] = Array(public final void ...
Se puede acceder a ScalaSigParser información de tipo específico que está presente en el código de byte con el ScalaSigParser .
import tools.scalap.scalax.rules.scalasig._
import scala.runtime._
val scalaSig = ScalaSigParser.parse(classOf[RichDouble])