2017-04-01 79 views
0

我有两个功能:我传递给第二功能功能组合物或管道操作符

user=> (def tmp (classificator.db/get-questions classificator.db/db)) 
#'user/tmp 
user=> (def result (map classificator.core/transform-data tmp)) 
#'user/result 

第一功能返回的数据。

我想在一个表达式乱写tmp变量:

user=> (-> (classificator.db/get-questions classificator.db/db) (map classificator.core/transform-data)) 

IllegalArgumentException Don't know how to create ISeq from: classificator.core$transform_data clojure.lang.RT.seqFrom (RT.java:542) 

貌似我没有在->宏使用错误。我该如何解决它?

回答

2

线程优先宏->将参数放在其余表单的第一个位置,但您希望它在最后进行。您可以使用线程最后一个宏->>代替:

(->> (classificator.db/get-questions classificator.db/db) 
    (map classificator.core/transform-data)) 

(->> classificator.db/db 
    (classificator.db/get-questions) 
    (map classificator.core/transform-data)))