2012-07-13 16 views
5

w radości Clojure stwierdza, że:Przedefiniowanie pól rekordu w Clojure

można nawet przedefiniować rekord, jeśli chce się mieć różne pola daje skompilowany wydajność Java dynamicznie

Czy ktoś może mi powiedzieć, jak to się robi?

Dzięki

+0

który rozdział/strona? – Kevin

+0

@Kevin Strona 191 - http://www.manning.com/fogus/Sample-Ch9.pdf :) –

+0

Masz na myśli, jak redefiniowane są zapisy? – Ankur

Odpowiedz

6

W rozdziale 9 idziemy przez definicji protokołu FIXO i rozszerzenia zarówno TreeNode rekordu i TreeNode typu. Pokazujemy, że budowanie implementacji FIXO może odbywać się dynamicznie. W rzeczywistości zaczynamy od rekordu TreeNode, rozszerzamy protokół FIXO, a następnie definiujemy typ TreeNode i rozszerzamy go na . Chociaż nie zmieniamy liczby pól, zmieniamy typ i po rozszerzeniu wszystkie wywołania za pośrednictwem protokołu FIXO zostają przekształcone w nowy typ (musieliśmy również przedefiniować rozszerzenie FIXO na nil, ponieważ zwracało ono stary rekord oparty NodeType.

można by prawdopodobnie nie to zrobić w kodzie, które można wdrożyć, ale jest to przydatna technika podczas eksperymentów. Spróbuj przejść przez sekcji FIXO i sprawdzić typy jak przejść.

Powiązane problemy