5

The Joy of Clojureには、次のように記載されています。

必要に応じてレコードを再定義して、Javaのコンパイル済みパフォーマンスを動的に提供するさまざまなフィールドを作成することもできます。

誰かがこれがどのように行われるかについて私に手がかりを与えることができますか?

ありがとう

4

1 に答える 1

6

FIXO第9章では、プロトコルの定義と、TreeNodeレコードとTreeNodeタイプの両方に対する拡張機能について説明します。の実装の構築はFIXO動的に実行できることを示します。実際、TreeNodeレコードから始めて、FIXOプロトコルを拡張し、次にTreeNodeタイプを定義FIXOして、代わりにそれに拡張します。フィールドの数は変更しませんが、タイプ自体を変更し、拡張すると、FIXOプロトコルを介したすべての呼び出しが新しいタイプに解決されます(古いレコードベースを返すため、FIXO拡張を再定義する必要がありました) 。nilNodeType

デプロイするコードではこれを行わない可能性がありますが、実験する場合は便利なテクニックです。FIXOセクションをウォークスルーして、タイプを確認してください。

于 2012-07-14T01:45:20.913 に答える