2012-05-26 9 views
13

Próbuję wykorzystać szybką dokumentację RubyMine i uzupełnianie kodu. Miło mi było odkryć, jak dobrze zintegrowany YARD komentarze w stylu:Czy mogę powiedzieć lub wskazać RubyMine, jaki typ zmiennej lokalnej lub instancji jest?

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

... te komentarze doskonale do parametrów powrotu typów, nawet wpisane kolekcjach. Ale nie mogę znaleźć żadnych podobnych znaczników na przykład lub zmiennych lokalnych i jestem pewien, że nie ma żadnego odlewania dostępnego w Ruby (Czy wspominałem, że jestem nowy w tym?)

Czy jest jakiś sposób, aby oszukać RubyMine w do typów zmiennych lokalnych i/lub instancji?

Odpowiedz

12

Wygląda na to nadchodzący, w oparciu o niedawnym komentarzu pisał do trackera emisyjnej wskazanej przez Matt Connolly: http://youtrack.jetbrains.com/issue/RUBY-9142#comment=27-787975

„zmienne lokalne mogą być uwagami lub bez nazwy zmiennej:”

# @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 

"wspiera także multi-zadania są:"

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

„Ale w przypadku o fa multi-przypisanie forma bez nazwy var nie działa (jest dyskusyjna, ale skłaniają do tego, może to prowadzić do pewnych błędów)

Również parametry blokowe można adnotacją: „

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

” The Należy zauważyć, że adnotacje typu należy umieszczać po lub na liście parametrów bloku, aby uniknąć prawdopodobnej niejasności. W przypadku jednolinijkowych wygląda to nieporęcznie, ale nie jestem pewien, czy mają być mocno opisane. W każdym razie, wszelkie sugestie są bardzo mile widziane. "

+0

Czy nie odbiera na '@ yield' i' @ yieldparam'? – thomthom

+0

Hmm ... więc nie ma jeszcze nic na przykładowe zmienne? –

+1

@FranklinYu Nie sądzę, ale można oczywiście tworzyć gettery (i setery), które można następnie opisać jako metody. – WiseOldDuck

4

Wygląda na to, że nie. Zalecam przejrzenie w narzędziu do śledzenia istniejących żądań funkcji i dodanie, aby Twój głos był słyszalny. Na przykład:

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

aktualizacji

Ta funkcja jest obecnie dostarczane z rubymine 7.0 (Tsubaki) EAP (138,1968) i wyższe (należy jednak pamiętać, że rubymine 7.0 jest obecnie w EAP (czyli beta) i zawsze istnieje szansa, że ​​nie dotrze to do ostatecznej dystrybucji.)

4

To nie jest 100% odpowiedź na to konkretne pytanie, ale może wskazywać na inną przydatną sztuczkę.

W testach robię to w ten sposób oszukać rubymine (5.0.2)

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

ponieważ z osprzętem Jestem pewien, że użytkownicy (: najpierw) zwróci obiekt, a ze względu na Use.new - IDE uważa, że ​​powinna to być instancja użytkownika.

+1

genialny, to wszystko, co chciałbym opublikować, ale SO wymaga minimum, więc masz to zdanie wyjaśniające – Joe

+2

Dziękuję panu, bardzo doceniane: D – meta

Powiązane problemy