Znalazłem ten post, szukając popularnych idiomów C ++, ponieważ ostatnio dość głęboko się w niego zagłębiłem i chciałbym, aby mój kod nie wyglądał tak amatorsko, jak mi się wydaje ... :-P
Spędziłem sporo czasu z Perlem i znalazłem idiomy w tym języku podobne do tych znalezionych w językach naturalnych, takich jak angielski lub hiszpański (tylko dwa znam wystarczająco dobrze, aby znać niektóre idiomy).
Nie zgadzam się, że ten idiom jest jak „mały wzór”. Nadal nie zgadzam się, choć w mniejszym stopniu, że idiom jest sposobem na obejście niedoboru języka.
Być może odpowiedź Luca Dantona jest najbliższa, ale pozwól mi wyjaśnić. Myślę, że ten idiom jest cóż idiomatyczny dla tych, którzy używają języka. Zwykle wspólne wyrażenie lub sekwencja wyrażeń, które, choć być może nie są oczywiste, wykonują operację lub wyrażają intencję w sposób, który ma sens dla tych, którzy są wystarczająco biegli , aby ją wcześniej zobaczyć.
Wracając do Perla, być może najbardziej znanym idiomem jest „ transformacja Schwartziana ”, wyrażenie, które wykonuje sortowanie danych w zwarty i wydajny sposób. Nie jest to najbardziej oczywisty sposób na wykonanie takiej operacji, ale jest ona zwięzła i ci, którzy ją widzieli wcześniej, od razu wiedzą, co ona robi.
Innym godnym uwagi przykładem jest „ The Orcish Mananever ”, który wykorzystuje perlowe pojęcia prawdziwych / fałszywych, bogatych operatorów i pierwszeństwa operatorów.
Ten, który osobiście bardzo lubię, jest nieco związany z Mancerem Orków, ale nie znam jego nazwy:
push @{ $some_hash{$key} ||= [] }, $some_value;
To rzeczywiście nie jest zaciemnianie, ale raczej wyraźne, zwięzłe wyrażenie czegoś, co w innym przypadku zajęłoby kilka linii. Jeśli klucz jest obecny w haszu i ma prawdziwą wartość, usuń odwołanie do niego jako tablicy i wrzuć $ some_value na tę tablicę. Jeśli element skrótu nie jest obecny lub ma fałszywą wartość, przypisz mu pustą tablicę, a następnie odłóż tę tablicę i wykonaj wypychanie.
Warto również zauważyć, że od Perla 5.14 część tego idiomu jest przestarzała - push może teraz działać bezpośrednio na odwołaniu do tablicy, bez potrzeby @ {}! Ponadto, począwszy od Perla 5.10, można użyć // = zamiast || =, który sprawdza nie prawdę, ale definicję.