2016-08-22 13 views
9

W rubymine mogę napisaćrubymine - automatycznie wykrywa .each, .map i inne typy iteracyjnej

# @param [Array<MyClass>] things 
def foo(things) 
end 

i rubymine uzupełni myClass metody things.first.*. Jednak po przejściu każdego z nich, na przykład:

# @param [Array<MyClass>] things 
def foo(things) 
    things.each { |t| t.* } 
end 

RubyMine traci swój typ wnioskowania. Wiem, że mogę dodawać komentarze, aby określić typy parametrów bloków, ale pętla przez obiekt jakiegoś typu powinna i tak dostarczyć parametry tego typu.

Czy jest jakiś sposób mogę napisać niestandardową regułę rubymine tak że .each, .map i inne iteratory Domniemywa się, że typ zmiennej jej wezwany?

+0

Kontakt Pomoc i „ve spotkać ich osobiście są NAPRAWDĘ szybko reagować. – plombix

+0

może to być przydatne.! [http://stackoverflow.com/questions/24318226/how-to-disable-rubymine-code-completion-after-comment-line-ending-in-period](http://stackoverflow.com/questions/24318226/how-to-disable-rubymine-code-completion-after-comment-line-in-period) –

+0

jest teraz problem na jetbrains dla tego https://youtrack.jetbrains.com/issue/RUBY-18531 – jtmarmon

Odpowiedz

1

Z moich badań, wygląda na to może być w stanie opisywać tak:

# @param [Array<MyClass>] things 
def foo(things) 
    things.each { 
    # @type [MyClass] t 
    |t| 
    t.* 
    } 
end 

Źródło: https://youtrack.jetbrains.com/issue/RUBY-9142#comment=27-787975

+0

tak, możesz jawnie opisywać parametry blokowe, ale chodziło mi o to, że nie chcę tego robić dla każdego wyliczenia. powinno być ukryte – jtmarmon