2012-02-03 12 views
5

YARD pozwala mi określić typy dla parametrów metod i wartości zwracanych. Ponieważ bardzo lubię kucać, dobrze jest zauważyć, że YARD wspiera również definiowanie typów, określając metody, które muszą obsługiwać.Dokumenty z kaczkami z wieloma metodami w YARD

Jak widać here, wyrażenia takie jak

#first_method, #second_method
są interpretowane jako logiczne rozłączenia. Oznacza to, że obiekt musi obsługiwać #first_method lub #second_method lub oba. To nie jest to, czego potrzebuję.

chciałbym być w stanie określić, że dany przedmiot jest zobowiązany do wspierania zarówno #first_method i #second_method dla mojego parametru. Czy istnieje sposób na określenie tego?

Odpowiedz

6

Nie ma składni idiomatic dla określenia złożonego interfejsu typu kaczka. Zauważ, że wszystkie specyfikacje typów są po prostu tekstem w wolnym formacie; Link do parsera typów YARD podany w pytaniu to po prostu zestaw konwencjonalnych lub idiomatycznych składni do określania wspólnych interfejsów. Jeśli myślisz o inteligentnym sposobie określania tych typów (i ma to sens dla użytkowników), możesz to zrobić. Być może coś w rodzaju #first#second może działać, lub #first&#second.

Moja rekomendacja byłaby jednak taka, aby utworzyć konkretny typ, aby otoczyć ten interfejs ad-hoc. Nawet jeśli w rzeczywistości nie używasz, wpisz w swoim środowisku wykonawczym obiekt jako obiekt w twojej domenie, aby wyjaśnić interfejs swoim użytkownikom. Na przykład tworzącdwoma metodami, a następnie dokumentując te dwie metody, można teraz użyć Foo jako typu. Możesz wyjaśnić w dokumentacji klasy Foo, że nigdy nie jest ona faktycznie używana w kodzie i po prostu istnieje jako "interfejs", jeśli tak jest. Możesz także uczynić Foo "modułem" oznaczającym, że jest on raczej "interfejsem" (lub "protokołem", jeśli wolisz ten język) niż konkretnym typem.

Powiązane problemy