0

私はJavaでこのコードを持っています

public class read{ 
   private ArrayList <String[]> test = new ArrayList<String[]>(); 

    //arr is a valid array 
//br is a buffered reader
while(br.readline())
    test.add(store(arr[]));

public String[] store (String[] str_arr) {
    String a; 
    new_str_arr[] = new String[2];
    new_str_arr[1] = str_arr[0];
    new_str_arr[0] = "Header";
    return new_str_arr;
}

どうすればこれを clojure に変換できますか?

4

2 に答える 2

3

ただし、テキストファイルを読み取って各行を要素の配列に保存する場合、およびファイルのサイズが大きくない場合は、これを試すことができます。

(use '[clojure.string :only (split)])
(split (slurp "file_name.txt") #"\r\n"))
于 2013-01-03T03:50:28.083 に答える
0

何を達成しようとしているのかわからない。br.readLine() の結果を String 変数に格納しないため、プログラムではおそらく何も起こらないでしょう。あなたが提供するテキストから、おそらくこれは近いでしょう:

(use 'clojure.java.io)
(with-open [rdr (reader "/tmp/test.txt")]
  (doall (map vector (line-seq rdr))))

Input file:
123
12
123
12
123
12
123
12
123

Output:
(["123"] ["12"] ["123"] ["12"] ["123"] ["12"] ["123"] ["12"] ["123"])

ファイルは 1 行ずつ読み取られ、一度にメモリに格納されるわけではありません。しかし、結果はそうです。レイジー seq を返すため、doallが必要です。mapレイジー seq の要素が with-open の外で実現される場合、ファイルは既に閉じられています。

于 2013-01-03T09:40:34.393 に答える