【发布时间】:2014-05-26 00:25:39
【问题描述】:
我想将以下 java 翻译成惯用的 clojure:
List<SimpleRecord> recs = new ArrayList<SimpleRecord>();
ParquetReader<SimpleRecord> reader = null;
try {
PrintWriter writer = new PrintWriter(Main.out, true);
reader = new ParquetReader<SimpleRecord>(new Path(input), new SimpleReadSupport());
for (SimpleRecord value = reader.read(); value != null; value = reader.read()) {
//value.prettyPrint(writer);
//writer.println();
recs.add(value);
}
return value;
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception ex) {
}
}
}
但我在每一步都无法将元素推送到列表中。 这就是我现在拥有的:
(let [rows (vector)
reader (new parquet.hadoop.ParquetReader (new org.apache.hadoop.fs.Path "file.pq")
(new SimpleReadSupport))]
;reader
(try
(for [value (.read reader) :while (not (nil? value))]
(conj value rows)) ;y u no recur?
rows
(finally (.close reader)))
)
但我不知道在for 中这样做的惯用方式是什么。我猜我必须使用reduce 不?谢谢
【问题讨论】:
标签: java clojure functional-programming