Nieużywany argument jako `_`

0

Stosujecie taką konwencję, że nieużywane argumenty funkcji nazywacie _ (wiem, że to nie tyczy Scalomaniaków, gdzie _ to domyślny argument w domknięciach (a przynajmniej tak mi się zdaje)).

0

Mi taka konwencja pasuje. Ogólnie używam _ do nazw zmiennych, w których chce pokazać to, że wartość tej zmiennej nie jest potrzebna, np. mutex w C++ używając RAII itp. Chyba ogólnie to ta konwencja pochodzi z Prologa, choć możliwe że jeszcze wcześniej była używana.

0

W niektórych językach _ (Prolog właśnie na przykład) jest o tyle fajny że jest specjalnie traktowany. W większości przypadków tak niestety nie ma, więc jeśli są dwa nieużywane parametry to koniec zabawy.

W językach funkcyjnych - tak.
W językach innych raczej rzadko jest potrzeba na przekazywanie nieużywanego parametru.

Ale w sumie ostatnio zacząłem to stosować w wyrażeniach lambda w C# (element funkcyjny w końcu) - na przykład

target.Callback = (_) => { };

Jest czytelniejsze niż

target.Callback = (unused) => { };

a przynajmniej tak mi się wydaje :>.

@Zjarek - C++ jest o tyle interesujący że można pominąć nazwę nieużywanego argumentu funkcji - też fajna opcja.

0

ala, dupa, foo, dummy, jakaś jednoliterowa nazwa o, s, i (object, string, integer), p (od „parametr”)

C++ jest o tyle interesujący że można pominąć nazwę nieużywanego argumentu funkcji
to też.

ostatnio zacząłem to stosować w wyrażeniach lambda w C#
wolę jednak nadać jakąś minimalnie sensowną nazwę, choćby po to by pamiętać że ten parametr tam jest i można go użyć.

0

Starożytne listenery też są pełnoprawnym callbackiem, choć mają rozwlekłą składnię. I w przypadku listenerów daję nazwy argumentów takie jak w źródłowych interfejsach listenerów, nawet jeśli ich nie używam.

Nie mam wielkiego doświadczenia z domknięciami itp zwięzłymi formami funkcji, ale czuję, że stosowanie głupich nazw w przypadku specyficznego API może się negatywnie odbić po jakimś czasie, gdy do projektu zasiądzie ktoś kto tego API nie używał przez np kilkanaście miesięcy.

(wiem, że to nie tyczy Scalomaniaków, gdzie _ to domyślny argument w domknięciach (a przynajmniej tak mi się zdaje))

W Scali _ jest o tyle fajne, że w domknięciach kolejne _ odpowiadają kolejnym argumentom. A więc zamiast pisać funkcję porównującą:

a: Int, b: Int => a < b

można napisać _ < _

Super bajer jeśli chodzi o korzystanie z biblioteki standardowej, ale jak już wyżej napisałem, przy stosowaniu tego do specyficznego API może być niebezpieczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1