4

我正在尝试使核心 java 类实现一个接口。我正在尝试以下方式:

(extend-protocol clojure.lang.Seqable
  java.lang.Integer
  (seq [this] (seq (str this))))

但这似乎不起作用,因为 Seqable 只是一个接口而不是协议。有没有可能做(seq 123)工作?java.lang.Strings是如何seq实现的?

代理似乎也无法做到这一点。

我知道我必须在这里遗漏一些非常明显的东西。

4

2 回答 2

2

不可能。clojure.lang.RT/seqFrom对一些 java 内置类型有特殊情况,比如 Collection 和 String,你不能为不直接实现 Seqable 的类添加自己的情况。

于 2013-01-06T03:16:27.743 回答
0

如果 java 类实现了 Iterable,并且被包裹在 中seq,则可以将其用作序列,但有一定的限制

于 2013-01-06T09:23:32.900 回答