scala - snippet - lo que hace que una variable sea visible(idea inteligente)
yoast seo snippet variables (5)
Con una idea inteligente, ¿cómo puedo saber qué hace que una variable sea visible?
Un ejemplo de cuando es difícil:
- Supongamos que miras la
class A
y ves una variablesomething
. Si saltas a la fuente, verás que está definido en eltrait X
Pero noextend
rasgoX
directamente. ¿Qué extiendes, entonces, que hace que esta variable sea visible? Si tiene una jerarquía profundamente anidada, el seguimiento puede ser difícil.
¿Alguna recomendación o solución?
EDITAR: si le gusta esta solicitud de función, considere votar por ella: http://youtrack.jetbrains.com/issue/IDEA-124369
No creo que IntelliJ IDEA tenga un atajo para "encontrar lo que hace que una variable sea visible".
Sin embargo, puede determinarlo utilizando la opción "Encontrar usos" (Alt + F7). Por ejemplo:
import java.nio._
object TempObj extends App {
def func = 2
val p = file.Paths.get("some-path")
func
}
Por lo tanto, Find Usages on "file", le dice que proviene del paquete "file" (en el encabezado de la nueva pestaña también muestra el nombre completo del paquete, por ejemplo: Find Usages of java.nio.file en Project Files). Mientras que Buscar usos en func te dirá que es un método (Y el encabezado de la pestaña ahora dice: Buscar usos de func () en proyectos y bibliotecas)
Así que ahora, de la manera en que puede determinar, qué hace exactamente visible la variable. Esto también funciona para las importaciones, ya que muestra el paquete desde el cual se importa y luego puede buscar la importación de esos paquetes.
Por lo que he entendido, usted quiere ver el código que crea un Objeto que usa, por ejemplo, Mystery someMystery;
.
Eso te da dos opciones para poblar un poco de someMystery
:
-
someMystery = ...
where ... es su código para rellenarsomeMystery
y si ese es el caso, debe seguir ese código (con ctrl + B hasta donde sea necesario) hasta el punto en el que realmente cree el objetoMystery
. - Use CDI para llenar esa instancia de objeto por usted, en cuyo caso debe mirar el mecanismo de CDI para ver de qué manera se llena la instancia de objeto.
En cualquier caso, no hay manera de saber con certeza si la instancia de someMystery
es de una clase más concreta que Mystery
, porque se decide en tiempo de ejecución, no en tiempo de compilación, por lo que su próxima apuesta sería ejecutar el programa en debug y vea qué objeto entra en someMystery
, aunque no está garantizado que obtenga el mismo tipo de objeto todas las veces.
PD. Mi respuesta se basa totalmente en mi comprensión de java del tema, no puedo decir si también es válido para Scala.
Sé de dos soluciones casi para este problema.
Ir a declaración, como mencionó, resuelve este problema en el caso de las variables locales.
De manera más general, la característica "encontrar usos" le brinda un pequeño desglose ordenado por tipo y archivo de diferentes usos de la variable. De esto se puede ver si está involucrado en una importación estática.
No es perfecto, pero con un momento de reflexión, estos dos son generalmente suficientes para descubrir lo que quieres.
Si desea que la clase, el campo o el método sean visibles, debe implementarlos como públicos. Si era tu pregunta.
Use ctrl + b o F4 para saltar al código fuente. Alternativamente, puede usar ctrl + shift + a para obtener la opción / acción. También puede encontrar accesos directos en http://gaerfield.github.io/ide-shortcuts/ . Espero que ayude.