ネストされたフォームをget
多用するコードベースがあります。get-in
コードを (あまり) 書き直さずに、ネイティブの JavaScript オブジェクトも使用できるようにしたいと考えています。
js> cljs.user.o = {foo: 42} // in js console
cljs.user> (get o "foo") ; => 42 ; in cljs console
get
私はフォームを照会するだけで、フォームを変更しないので、 (get-in
依存する)実装するだけで十分だと思いました。ここに私の試みがあります、
(extend-protocol ILookup
js/Object
(-lookup [m k] (aget m k))
(-lookup [m k not-found (or (aget m k) not-found)))
機能しているように見えますが、奇妙な方法で多くのことを壊します。