问题标签 [deftype]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1468 浏览

scheme - Common Lisp 和 Scheme 中的 deftype 的区别

我正在尝试将一些 Common Lisp 代码翻译成 Scheme 代码。Common Lisp 代码有一个deftype. Scheme 中的s 与 Common Lisp中的 sdeftype相同吗?deftype如何将deftypeCommon Lisp 中的 a 翻译成 Scheme 中的等效代码?

0 投票
2 回答
516 浏览

clojure - clojure中的嵌套类型?

在 clojure 中,如何键入类型提示我创建的类型?(我想嵌套类型。)

例如,我曾认为这会起作用:

这会显示一条错误消息:

注意:clojure 类型是一个新功能,目前仅存在于 clojure 的“新”分支中。

编辑:我对 clojure 中用于 java 和 clojure 类型的不同类型提示方式感到困惑。java类被暗示为

而 clojure 类型被暗示为:

0 投票
1 回答
3947 浏览

clojure - 我应该什么时候在 Clojure 中使用 deftype?

昨天,Rich 将 Clojure 的“新”分支拉入 master。我们现在正在拥抱 deftype 和 defprotocol 的美。当然,来自 Haskell 的我很想像在 Haskell 中那样定义类型,这几乎适用于除了一次性元组之外的所有类型,但我认为在 Clojure 世界中不会这样工作;)。在 Clojure 的常见错误线程中,一个人提到过度使用结构是他刚开始时犯的一个错误,来自 OOP。由于 deftypes 似乎与结构相似,我想知道是否同样适用。

所以,我的问题是:什么时候是使用 deftype 的好时机?

0 投票
1 回答
648 浏览

clojure - 我可以向 clojure 类型添加字段吗?

Clojure 结构可以任意扩展,添加新字段。

是否可以以类似的方式扩展类型(使用 deftype 创建)?

编辑:为了让未来的访客受益,正如布赖恩在下面指出的那样,此功能可能会发生变化。

0 投票
1 回答
1982 浏览

servlets - 如何定义实现 servlet 接口的 clojure 类型?

我正在尝试使用 deftype(来自最前沿的 clojure 1.2 分支)来创建一个实现 java Servlet 接口的 java 类。我希望下面的代码能够编译(即使它不是很有用)。

但它不编译。编译器产生消息:

这对我来说没有意义,因为我返回零。因此,该方法的返回类型为 void 的事实应该不是问题。例如,对于 java.util.Set 接口:

编译没有问题。

那么我在 Servlet 接口上做错了什么?

需要明确的是:我知道典型的情况是子类化一个 servlet 抽象类,而不是直接实现这个接口,但应该仍然可以这样做。

堆栈跟踪:

(deftype servlet... 的堆栈跟踪是:

0 投票
1 回答
3163 浏览

clojure - 在 Clojure deftype 中覆盖 equals、hashCode 和 toString

我正在尝试使用 deftype 在 Clojure 中创建一个新类型来实现二维 (x,y) 坐标,该坐标实现了“位置”协议。

我还想让它实现标准的 Java equals、hashCode 和 toString 方法。

我最初的尝试是:

但是,如果 b 参数实现了 Location 协议,equals 方法仍然需要一些方法。

什么是正确的方法?我在正确的轨道上吗?

0 投票
2 回答
7247 浏览

clojure - Clojure deftype中的可变字段?

我正在尝试 Clojure 1.2,特别是deftype根据clojure.org 文档支持的可变字段。

但我无法让设备正常工作。更新字段的语法是什么?或者还没有实现可变性?

使用几天前的 1.2 快照。

0 投票
1 回答
494 浏览

clojure - 使用 Clojure deftype 作为参数化函数

我正在尝试在编译器中使用 clojure,因此需要参数化对deftype; 但是,我很难使类型提示得以贯彻。考虑以下代码:

以及来自 REPL 的以下会话:

请注意,为间接类型生成的类丢失了直接类型所具有的 ^int 提示。我如何获得这些提示?

0 投票
2 回答
2261 浏览

clojure - 对于 clojure 中的 deftype'd 对象,什么是好的 toString 方法

我希望 toString 看起来像

什么是表示该信息的好 clojurey 方式?是

更好的?社区如何称呼你的 toStrings?

0 投票
2 回答
2870 浏览

testing - 如何在 clojure 中使用自己命名空间之外的类型?

我有一个名为 techne 的 leiningen 项目。我创建了一个名为 Scrub 的模块,其中有一个名为 Scrub 的类型和一个名为 foo 的函数。

技术/scrub.clj:

技术/scrub_test.clj:

当我运行测试时,我收到错误:

如果我删除测试擦洗一切正常。为什么 :use techne.scrub “导入”函数定义而不是类型定义?如何引用类型定义?