gpt4 book ai didi

Clojure记录构造函数不是一流的?

转载 作者:行者123 更新时间:2023-12-02 19:01:06 24 4
gpt4 key购买 nike

显然,您不能使用记录构造函数调用 apply :

(defrecord Foo. [id field])

(apply Foo. my-list)

在读取时失败,因为它没有期待 Foo。就在那个地方。

我能想到的唯一明显的解决方法是添加工厂函数:

(make-foo [id field] (Foo. id field))

当然可以应用。

我错过了什么吗?我希望 C#/Java 能做到这一点,但只是觉得 Clojure 有点令人失望......

最佳答案

回到 1.3 后......

在 Clojure 1.3 中,defrecord 创建两个生成的构造函数。鉴于:

(defrecord Person [first last]) 

这将创建一个位置构造函数->Person:

(->Person "alex" "miller")

和 map 构造函数map->Person:

(map->Person {:first "string"})

因为这是一个映射,所以所有键都是可选的,并且在构造的对象中采用 nil 值。

您应该在声明记录的 ns 中要求/使用这些函数,但不需要像使用 Java 类构造函数时那样导入记录类。

更多详细信息:

关于Clojure记录构造函数不是一流的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016143/

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