Jak przydatne są operatory infix w języku programowania? Czy są warte dodatkowej złożoności, którą zapewniają? Czy możesz podać jakieś przykłady, w których operatory infix lepiej pasują do problemu, którego nie można rozwiązać przez przeciążenie zwykłych operatorów?
programming-languages
syntax
operators
Casebash
źródło
źródło
arg1.method(arg2)
zamiastmethod(arg1, arg2)
.Odpowiedzi:
Myślę, że operatory infix wywodzą się z matematyki.
To:
jest bardziej czytelny dla większości ludzi niż
ponieważ większość ludzi zna matematykę.
Interesująco w Haskell możesz przeskakiwać między infix a prefiksem. Używa tej samej funkcji „(+)”:
i używa tej samej funkcji „elem”:
źródło
(+ 1 2)
jest bardziej czytelny niż1 + 2
. Przynajmniej(+ 1 2 3 4 5)
jest lepszy niż1 + 2 + 3 + 4 + 5
.1 2 +
lub1 2 3 4 5 +
częściej w ostatnim przypadku1 2 + 3 + 4 + 5 +
. Istnieje naprawdę spora zaleta dla tych, ponieważ doskonale modeluje system oparty na stosie i rzadko (jeśli w ogóle?) Potrzebuje nawiasów, aby dostosować pierwszeństwo operatora.Języki komputerowe są przeznaczone dla ludzi, a nie maszyn. A ludzie są bardziej przyzwyczajeni do infiksowania operatorów niż przedrostków lub postfiksów.
źródło
Jedynym prawdziwym powodem dla operatorów infix jest to, że ludzie zazwyczaj uważają je za łatwiejsze do odczytania. Wynika to głównie z dwóch faktów:
2 * 2 = 4
itp.(some complex expression) + (some other complex expression)
Z punktu widzenia logiki / maszyny operatorzy infix tak naprawdę nie dodają żadnej wartości, aw niektórych przypadkach są uciążliwe:
(* 1 2 3 4 5)
na przykład w Lisp jest zapewne o wiele czystszą składnią do mnożenia zestawu liczb.źródło