原子在Maclisp中具有属性。在Clojure中如何做同样的事情?
引用1975年Maclisp参考手册:每个原子符号都有一个属性列表,可以使用plist函数检索 Maclisp属性列表是“指示符/值”对的列表。在麦克里斯普原子在Maclisp中具有属性。在Clojure中如何做同样的事情?,clojure,property-list,maclisp,Clojure,Property List,Maclisp,引用1975年Maclisp参考手册:每个原子符号都有一个属性列表,可以使用plist函数检索 Maclisp属性列表是“指示符/值”对的列表。在麦克里斯普 (get x y) 获取x的y属性 (putprop x 'banana y) 将x的y属性设置为“香蕉” 我的任务是将许多旧的Maclisp代码转换成Clojure。我是Clojure的新手,但不会持续太久,因为这个项目正在展开。在我自己写东西之前,我想知道Clojure是否已经有了属性列表功能?或者是相近的 如果不是的话,组装好的C
(get x y)
获取x的y属性
(putprop x 'banana y)
将x的y属性设置为“香蕉”
我的任务是将许多旧的Maclisp代码转换成Clojure。我是Clojure的新手,但不会持续太久,因为这个项目正在展开。在我自己写东西之前,我想知道Clojure是否已经有了属性列表功能?或者是相近的
如果不是的话,组装好的Clojure神会让我做什么来实现这样的功能?请记住,Maclisp中的每个原子符号都可以但不必有属性列表。谢谢。clojure具有与变量/数据值关联的元数据映射:
user> (def x [1 2 3])
#'user/x
user> (reset-meta! #'x {:my-data 1})
;;=> {:my-data 1}
请注意,此元数据与变量关联,而不是与变量绑定数据关联
user> (-> x var meta)
{:my-data 1}
user> (-> #'x meta) ;; short form
{:my-data 1}
user> (-> x meta)
nil
否则,可以将其附加到值本身:
user> (def x ^{:some-data 101} [1 2 3])
#'user/x
user> (meta x)
{:some-data 101}
取决于您希望如何使用它。clojure具有与变量/数据值关联的元数据映射:
user> (def x [1 2 3])
#'user/x
user> (reset-meta! #'x {:my-data 1})
;;=> {:my-data 1}
请注意,此元数据与变量关联,而不是与变量绑定数据关联
user> (-> x var meta)
{:my-data 1}
user> (-> #'x meta) ;; short form
{:my-data 1}
user> (-> x meta)
nil
否则,可以将其附加到值本身:
user> (def x ^{:some-data 101} [1 2 3])
#'user/x
user> (meta x)
{:some-data 101}
取决于您想如何使用它。地图。你在找地图。检查clojure的。@akond,不,他是在询问symbol的财产清单。这大致与clojure metadataBe类似。请务必查看以下文档资源列表:是的。非常感谢。我认为元数据会起作用。你在找地图。检查clojure的。@akond,不,他是在询问symbol的财产清单。这大致与clojure metadataBe类似。请务必查看以下文档资源列表:是的。非常感谢。我认为元数据会起作用。