gpt4 book ai didi

clojure defrecord命名参数?

转载 作者:行者123 更新时间:2023-12-02 18:26:54 26 4
gpt4 key购买 nike

defrecord 支持命名参数吗?也就是说,如果我有这样的东西:

(defrecord Person [name age])

我可以做这样的事情吗:

(Person. {:age 99 :name "bob"})
(Person. :age 99 :name "bob")

我通过谷歌搜索唯一看到的是这样的东西:

(Person. "bob" 99)

这似乎不太清楚......

最佳答案

不是内置的,但你可以使用类似的东西:

(defmulti make-instance (fn [class & rest] class))
(defmacro defrecord* [record-name fields]
`(do
(defrecord ~record-name ~fields)
(defmethod make-instance (quote ~record-name) [_# & {:keys ~fields}]
(new ~record-name ~@fields))))
(defrecord* Person [name age])
(make-instance 'Person :age 99 :name "bob")

不确定这是否适合您想要的。

关于clojure defrecord命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com