Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试使核心 java 类实现一个接口。我正在尝试以下方式:
(extend-protocol clojure.lang.Seqable java.lang.Integer (seq [this] (seq (str this))))
但这似乎不起作用,因为 Seqable 只是一个接口而不是协议。有没有可能做(seq 123)工作?java.lang.Strings是如何seq实现的?
(seq 123)
seq
代理似乎也无法做到这一点。
我知道我必须在这里遗漏一些非常明显的东西。
不可能。clojure.lang.RT/seqFrom对一些 java 内置类型有特殊情况,比如 Collection 和 String,你不能为不直接实现 Seqable 的类添加自己的情况。
clojure.lang.RT/seqFrom
如果 java 类实现了 Iterable,并且被包裹在 中seq,则可以将其用作序列,但有一定的限制。