observable java_java-找不到Observable / toObservable作为静态函数...

在Clojure 1.5.1中使用RxJava时遇到一个问题,尝试将字符串转换为Observables并订阅以收集数据。在使用`.mapMany`和`(comp Observable/toObservable string-explode)`时,出现`clojure.lang.Compiler$CompilerException`,无法找到`Observable/toObservable`静态字段。然而,当直接使用`#(Observable/toObservable (string-explode %))`时,程序正常运行。问题在于为何在`comp`组合器中调用静态方法会引发异常。
摘要由CSDN通过智能技术生成

在Clojure 1.5.1的光照表下使用rxjava(http://netflix.github.io/RxJava/javadoc/),请考虑以下因素(使用副作用,变异(恐怖!)外部收集器从monad中提取数据)

(ns expt1.core (:import [rx]))

(def ^:private collector (atom []))

(defn- collect [item]

(reset! collector (conj @collector item)))

(def string-explode (partial map identity))

(reset! collector [])

(->

(Observable/toObservable ["one" "two" "three"])

(.mapMany #(Observable/toObservable (string-explode %)))

(.subscribe collect)

)

@collector

产生:

[\o \n \e \t \w \o \t \h \r \e \e]

我想说

(reset! collector [])

(->

(Observable/toObservable ["one" "two" "three"])

(.mapMany (comp Observable/toObservable string-explode))

(.subscribe collect)

)

但是,惊喜

clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to find static field: toObservable in class rx.Observable, compiling:(NO_SOURCE_PATH:93:1)

Compiler.java:6380 clojure.lang.Compiler.analyze

Compiler.java:6322 clojure.lang.Compiler.analyze

Compiler.java:3624 clojure.lang.Compiler$InvokeExpr.parse

Compiler.java:6562 clojure.lang.Compiler.analyzeSeq

...

实际上,只是

Observable/toObservable

产生类似的异常.为什么Clojure在类似表达式中时可以找到Observable / toObservable

#(Observable/toObservable (string-explode %))

但不是像

(comp Observable/toObservable string-explode)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值