2012-05-26 9 views
13

Estoy tratando de aprovechar los documentos rápidos de RubyMine y la finalización del código. Yo estaba contento de descubrir lo bien que integra los comentarios de estilo Patio:¿Puedo decir o indicarle a RubyMine qué tipo de variable local o de instancia es?

# @param [Numeric] width 
# @param [Array<String>] values 
# @return [Widget]  
def foo(width, values) 

... estos comentarios un gran trabajo para los parámetros, incluso, colecciones mecanografiados a tipos de retorno. Pero no puedo encontrar ninguna etiqueta similar por ejemplo o variables locales, y estoy bastante seguro de que no hay ningún tipo de conversión disponible en Ruby (¿mencioné que soy nuevo en esto?)

¿Hay alguna manera de dar pistas sobre RubyMine? a los tipos de variables locales y/o de instancia?

Respuesta

12

parece que este es próxima, basado en un comentario reciente publicado en el seguimiento de incidencias referenciado por Matt Connolly: http://youtrack.jetbrains.com/issue/RUBY-9142#comment=27-787975

"variables locales se pueden anotar con o sin nombre de la variable:"

# @type [String] 
my_var = magic_method 

# @type my_var [String] 
my_var = magic_method 

# @type [String] my_var 
my_var = magic_method 

# @type [String] my_var And some documentation is allowed 
my_var = magic_method 

"también multi-tareas son compatibles:"

# @type my_var [String] The first part 
# @type other_var [Range] The second part 
my_var, other_var = magic_method 

"Pero en el caso de O FA multi-tarea de la forma sin nombre var no funcionaría (esto es discutible, pero me inclino a que puede dar lugar a algunos errores)

también parámetros de los bloques se pueden anotar: "

method_with_block do 
    # @type [String] param1 
    # @type [Range] param2 
    | param1, param2 | 
    # some code... 
end 

" El Lo que hay que tener en cuenta es que las anotaciones de tipo deben colocarse después de hacer o {y antes de la lista de parámetros de bloque, para ayudar a evitar una posible ambigüedad. En el caso de las frases ingenuas, parece complicado, pero no estoy seguro de que vayan a ser muy anotadas. De todos modos, cualquier sugerencia es muy bienvenida. "

+0

¿No retoma? en '@ yield' y' @ yieldparam'? – thomthom

+0

Hmm ... así que no hay nada, por ejemplo, variables todavía? –

+1

@FranklinYu No lo creo, pero por supuesto puede hacer getters (y setters) que luego puede anotar como métodos. – WiseOldDuck

4

Parece que no. Recomiendo buscar en el rastreador de problemas las solicitudes de funciones existentes y agregar hacer que su voz se escuche allí. Por ejemplo:

http://youtrack.jetbrains.com/issue/RUBY-9142

actualización

Esta característica está a la venta con RubyMine 7.0 (Tsubaki) EAP (138,1968) y superior (pero tenga en cuenta que RubyMine 7.0 se encuentra actualmente en EAP (es decir beta) y siempre hay una posibilidad de que esto no llegue a la distribución final.)

4

No es 100% de respuesta para esta pregunta en particular, pero podría apuntar a otro truco útil.

En las pruebas que estoy haciendo de esta manera para engañar RubyMine (5.0.2)

user = users(:normal) || User.new 

ya que con los accesorios Estoy seguro de que los usuarios: en primer lugar() devuelve el objeto, y debido a Use.new - IDE cree que debería ser una instancia de usuario.

+1

brillante. Eso es todo lo que publicaría, pero SO requiere un mínimo, por lo que tiene esta frase explicativa. – Joe

+2

Muchas gracias señor, muy apreciado: D – meta

Cuestiones relacionadas