Clojure:为现有的java类实现Seqable

时间:2013-01-05 23:31:40

标签: class interface clojure

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

不可能。 clojure.lang.RT/seqFrom对于许多java内置类型(如Collection和String)都有special cases,并且你不能为没有直接实现Sewable的类添加自己的。{/ p>

答案 1 :(得分:0)

如果java类实现Iterable,并且包含在seq中,则可以将其用作序列,并使用某些restrictions