Grundsätzlich habe ich eine Liste von Caches und ein Cache ist ein benutzerdefinierter Typ mit 16 Parametern. Mit meinem Code ich nur aus einer vorhandenen Datei den ersten Cache lesen, der existiert, wie lese ich rekursiv alle Caches in der Datei?Laden Sie eine Datei in Ocaml rekursiv
Der Cache ist bereits fertig gelesen werden:
let loadCache ci =
let code = input_line ci in
let name = input_line ci in
let state = input_line ci in
let owner = input_line ci in
let latitude = float_of_string (input_line ci) in
let longitude = float_of_string (input_line ci) in
let kind = input_line ci in
let size = input_line ci in
let difficulty = float_of_string (input_line ci) in
let terrain = float_of_string (input_line ci) in
let status = input_line ci in
let hiddenDate = input_line ci in
let nFounds = int_of_string (input_line ci) in
let nNotFounds = int_of_string (input_line ci) in
let nFavourites = int_of_string (input_line ci) in
let altitude = int_of_string (input_line ci) in {
code = code; name = name; state = state; owner = owner;
latitude = latitude; longitude = longitude;
kind = kind; size = size; difficulty = difficulty; terrain = terrain;
status = status; hiddenDate = hiddenDate;
nFounds = nFounds; nNotFounds = nNotFounds; nFavourites = nFavourites;
altitude = altitude
}
;;
Und das ist, was im lesen (nicht recusive noch) nicht zu tun versuchen:
val load: string -> cache list
let rec loadChannel ci =
try
loadCache ci
with End_of_file -> raise (Arg.Bad "loadChannel: no caches on this file to read")
;;
let load filename = (* post: result is never [] *)
let ci = open_in filename in
let cl = loadChannel ci in
close_in ci; cl
;;
Und falls Sie müssen testen es im heren den Cache-Typen setzen, so dass Sie es nicht schaffen müssen:
type cache = {
code: string;
name: string;
state: string;
owner: string;
longitude: float;
kind: string;
size: string;
difficulty: float;
terrain: float;
status: string;
hiddenDate: string;
nFounds: int;
nNotFounds: int;
nFavourites: int;
altitude: int
} ;;
Eine letzte Sache, zu testen und sehen, ob dies ist nur Arbeits den vollständigen Pfad ein, in dem die Datei:
let q = load "C: ...... file.txt"
Nun, es ist immer eine Freude zu antworten und keine Rückmeldung zu haben ;-) – Lhooq