4

CSV ファイルを解析していますが、CSV には型情報がないため、すべての値 (浮動小数点数、整数、日付など) が文字列になります。タイプを修正するために、各フィールドのタイプを定義するマップを作成しました。ここで、フィールドを適切な型に変換する必要があります。

値が整数と浮動小数点数、および場合によっては他の型を含む文字列であるマップを考えると、型定義マップを参照して、それらの値を適切な型に変換したマップを返す必要があります。以下は私が思いついたコードのサンプルですが、これを行うにはもっと良い方法が必要だと思います。

(mapv #(case ({"one" :int, "point-two" :float} (key %))
        :int {(key %) (Integer/parseInt (val %))}
        :float {(key %) (Float/parseFloat (val %))}
        {(key %) (val %)}) ; If there's no type defined, just return the original
 {"one" "1", "point-two" ".2", "three" "three"})

caseそれぞれの場合に必要な結果でマップを再作成しています.. デフォルトのテスト用にマップ エントリを再作成するのは、{(key %) (val %)}さらに面倒に思えます。

4

1 に答える 1