2014-12-10 12 views

Odpowiedz

9

_ jest wieloznaczny, każdy obiekt. Zobacz here, aby dowiedzieć się, w jaki sposób został on dokładnie wdrożony, i here dla dokumentów. _ jest używany na przykład do sprawdzenia wywołanie metody, które argument nie ma znaczenia, to wygląda:

1 * obj.method(1, _)

W tym konkretnym przypadku, to sprawdzić, czy metoda method na przykład obj została wywołana dokładnie jeden raz 1 jako pierwszy argument i dowolne.

+1

Bardziej przyjazny [link] (https://spock-framework.readthedocs.org/en/latest/interaction_based_testing.html#interactions) do dokumentacji Spock wyjaśniającej symbole wieloznaczne i liczności ([Twój konkretny przypadek] (https: // spock-framework .readthedocs.org/pl/latest/interaction_based_testing.html # matching-any-method-call)). –

+0

Dzięki @GregorPetrin! Chciałem pokazać wdrożenie, a raczej użycie, ale jest to bardzo przydatne. – Opal

+1

Dobrze jest mieć oba, prawda? W każdym razie Spock ma dokumenty w dwóch miejscach, a wersja Google Code wygląda raczej nieprzyjaźnie, więc sądzę, że zawsze dobrze jest podać link do nowoczesnej wersji. –

0

EDYCJA: Moja odpowiedź nie odnosi się do problemu operatora i odnosi się do niepowiązanego problemu. Prawidłowa odpowiedź widać powyżej


_ jest często używany do określenia zawartości prywatne/zmiennych w językach takich jak Groovy/Javascript że mają teraz śledzić lub świadczenia dyrektyw widoczności.

Podczas gdy wciąż możesz uzyskać do nich dostęp spoza klasy lub instancji, programista stara się powiedzieć, że ta zmienna ma być używana tylko wewnętrznie.

+0

Java i Groovy mają wytyczne widoczności, więc podkreślone zmienne prywatne nie są wymagane, ponadto zmienna powinna mieć co najmniej * trochę * tekstu po znaku podkreślenia, aby wyjaśnić, co to znaczy. W tym przypadku jest to wieloznaczny znak specjalny Spocka, ponieważ inna odpowiedź prawidłowo stwierdza. –

+0

Masz rację, mówiąc o użyciu znaku podkreślenia (dobrze zrobione pod warunkiem, że link nie jest łatwy do uzyskania). Groovy przez długi czas ignorował dyrektywy dotyczące widoczności. Czy mógłbyś podać mi link do dokumentacji, która wykazała, że ​​zostało to rozwiązane? – Dennis

+0

To nie zostało rozwiązane. Groovy nadal traktuje wyraźnie widoczność. Nie wiem o konwencji, np. z Pythona, który został zastosowany do groovy. – Opal