Edited at

reifyについて

More than 5 years have passed since last update.

読んでたコードにreifyが出てきたけど、知らなかったので使い方などのメモ。reifyは特定の(クラスではなく)オブジェクトの挙動を変えるような関数。例えばこんな感じ。

    (def m {"a" 1})

(str m) ; "{\"a\" 1}"
(str (let [x m]
(reify
java.lang.Object
(toString [this] "hoge")))) ; "hoge"

自信が全くないけど、Rubyの特異メソッドとかが近い?