【问题标题】:How to use clojure hierarchies?如何使用 clojure 层次结构?
【发布时间】:2011-01-03 09:20:02
【问题描述】:

我试图了解 Clojure 层次结构如何使用 deriveis-a? 构造。我不确定如何将这些与我的程序中的地图和记录一起使用。有人用过吗?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    我觉得你的问题有点含糊。您是否阅读过 Clojure 网站上的文档?

    http://clojure.org/multimethods

    我发现那里的例子很容易理解:

    user=> ::rect
    :user/rect
    user=> (derive ::rect ::shape)
    nil
    user=> (parents ::rect)
    #{:user/shape}
    user=> (derive ::square ::rect)
    nil
    user=> (ancestors ::square)
    #{:user/shape :user/rect}
    user=> (isa? ::square ::shape)
    true
    

    还有这篇博文包含一个更“真实”的示例:

    http://www.prodevtips.com/2010/06/20/clojure-inheritance/

    【讨论】:

    • 谢谢,有用的信息,所以如果我理解正确,如果我有一个像 (defrecord R []) 这样的记录并且我想把它放在一个类型层次结构中,那么我需要将类型与它关联起来,比如(def r (R.)) (assoc r :type ::type)。这是正确的吗?
    • Tbh,我从来没有对记录做过这样的事情(不幸的是我还没有时间真正深入研究 Clojure 1.2),但这似乎是合理的。
    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多