问题标签 [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.
scheme - Common Lisp 和 Scheme 中的 deftype 的区别
我正在尝试将一些 Common Lisp 代码翻译成 Scheme 代码。Common Lisp 代码有一个deftype
. Scheme 中的s 与 Common Lisp中的 sdeftype
相同吗?deftype
如何将deftype
Common Lisp 中的 a 翻译成 Scheme 中的等效代码?
clojure - clojure中的嵌套类型?
在 clojure 中,如何键入类型提示我创建的类型?(我想嵌套类型。)
例如,我曾认为这会起作用:
这会显示一条错误消息:
注意:clojure 类型是一个新功能,目前仅存在于 clojure 的“新”分支中。
编辑:我对 clojure 中用于 java 和 clojure 类型的不同类型提示方式感到困惑。java类被暗示为
而 clojure 类型被暗示为:
clojure - 我应该什么时候在 Clojure 中使用 deftype?
昨天,Rich 将 Clojure 的“新”分支拉入 master。我们现在正在拥抱 deftype 和 defprotocol 的美。当然,来自 Haskell 的我很想像在 Haskell 中那样定义类型,这几乎适用于除了一次性元组之外的所有类型,但我认为在 Clojure 世界中不会这样工作;)。在 Clojure 的常见错误线程中,一个人提到过度使用结构是他刚开始时犯的一个错误,来自 OOP。由于 deftypes 似乎与结构相似,我想知道是否同样适用。
所以,我的问题是:什么时候是使用 deftype 的好时机?
clojure - 我可以向 clojure 类型添加字段吗?
Clojure 结构可以任意扩展,添加新字段。
是否可以以类似的方式扩展类型(使用 deftype 创建)?
编辑:为了让未来的访客受益,正如布赖恩在下面指出的那样,此功能可能会发生变化。
servlets - 如何定义实现 servlet 接口的 clojure 类型?
我正在尝试使用 deftype(来自最前沿的 clojure 1.2 分支)来创建一个实现 java Servlet 接口的 java 类。我希望下面的代码能够编译(即使它不是很有用)。
但它不编译。编译器产生消息:
这对我来说没有意义,因为我返回零。因此,该方法的返回类型为 void 的事实应该不是问题。例如,对于 java.util.Set 接口:
编译没有问题。
那么我在 Servlet 接口上做错了什么?
需要明确的是:我知道典型的情况是子类化一个 servlet 抽象类,而不是直接实现这个接口,但应该仍然可以这样做。
堆栈跟踪:
(deftype servlet... 的堆栈跟踪是:
clojure - 在 Clojure deftype 中覆盖 equals、hashCode 和 toString
我正在尝试使用 deftype 在 Clojure 中创建一个新类型来实现二维 (x,y) 坐标,该坐标实现了“位置”协议。
我还想让它实现标准的 Java equals、hashCode 和 toString 方法。
我最初的尝试是:
但是,如果 b 参数实现了 Location 协议,equals 方法仍然需要一些方法。
什么是正确的方法?我在正确的轨道上吗?
clojure - Clojure deftype中的可变字段?
我正在尝试 Clojure 1.2,特别是deftype
根据clojure.org 文档支持的可变字段。
但我无法让设备正常工作。更新字段的语法是什么?或者还没有实现可变性?
使用几天前的 1.2 快照。
clojure - 使用 Clojure deftype 作为参数化函数
我正在尝试在编译器中使用 clojure,因此需要参数化对deftype
; 但是,我很难使类型提示得以贯彻。考虑以下代码:
以及来自 REPL 的以下会话:
请注意,为间接类型生成的类丢失了直接类型所具有的 ^int 提示。我如何获得这些提示?
clojure - 对于 clojure 中的 deftype'd 对象,什么是好的 toString 方法
我希望 toString 看起来像
什么是表示该信息的好 clojurey 方式?是
更好的?社区如何称呼你的 toStrings?
testing - 如何在 clojure 中使用自己命名空间之外的类型?
我有一个名为 techne 的 leiningen 项目。我创建了一个名为 Scrub 的模块,其中有一个名为 Scrub 的类型和一个名为 foo 的函数。
技术/scrub.clj:
技术/scrub_test.clj:
当我运行测试时,我收到错误:
如果我删除测试擦洗一切正常。为什么 :use techne.scrub “导入”函数定义而不是类型定义?如何引用类型定义?