Widziałem wiele komentarzy w internecie Operator inteligentnego dopasowywania Perla jest zepsuty . Wiem, że pierwotnie był częścią Perla 6, następnie został zaimplementowany w Perlu 5.10 poza starą wersją specyfikacji, a następnie został poprawiony w wersji 5.10.1, aby pasował do bieżącej specyfikacji Perla 6.
Czy problem został rozwiązany w wersji 5.10.1+, czy też istnieją inne problemy z operatorem smart-match, które sprawiają, że jest on kłopotliwy w praktyce?
Jakie są problemy?
Czy istnieje jeszcze bardziej zaktualizowana wersja (być może Perl 6), która rozwiązuje problemy?
Edycja: Aby wyjaśnić, nie pytam o błędy, ale raczej opinię, że zamierzone zachowanie ~~
jest złe.
Odpowiedzi:
Ludzie często mylą problemy, które pojawiają się z operatorem smartmatch z tymi, które powstają z
given/when
konstrukcją, takie jak problem leksykalny$_
.Doszedłem do wniosku, że jeśli użyjesz operatora smartmatch tylko do literałów, nie oszalejesz. Nie mogę obiecać żadnej innej sytuacji. Próbowanie rozgryźć, co
$a ~~ $b
się dzieje, wystarczy, by doprowadzić porządnego człowieka do szaleństwa krzycząc i zająć się zupełnie innym językiem programowania.A przynajmniej takie podejście otrzymałem od Larry'ego, gdy redagował sekcję smartmatch czwartej edycji Programming Perl .
źródło
Operator inteligentnego dopasowania nie był „zepsuty” , ale miał wiele błędów. Perl v5.12 to naprawił, a Perl v5.14 udoskonalił go IMHO. Tak więc, aby odpowiedzieć na twoje pytanie, Perl v5.12 i nowsze rozwiązuje ten problem. Możesz spróbować z późniejszymi wersjami Perla v5.10, ale wiem, że działa lepiej w Perlu 5.12+.
Edycja: aby odpowiedzieć na edycję, zobacz tego bloga . Po przeczytaniu artykułu uważam, że wystarczająco odpowiedział na twoje pytanie.
źródło