我是
Ocaml
的新手,我必须做一个项目。我目前面临带有 end
关键字的 if-else 块的问题。这是我有问题的方法。。这是我完整的项目。谢谢您的帮助。
let parkVehicle () =
try
print_string "Please enter the license plate: ";
let licensePlate = read_line () in
let index = checkExists licensePlate in
if index = -1 then
begin
print_string "Adding new ticket....\n";
let ticket = Ticket.(setId (Int64.of_float (Unix.time ())));
if addVehicle licensePlate then
begin
tickets := ticket :: !tickets;
print_string "Parking vehicle successfully....\n"
end
else
print_string "Fail to add new ticket! Try again!\n"
end
^^^^^
else
begin
print_string "Removing existing ticket....\n";
let ticket = List.nth !tickets index in
tickets := List.filter (fun t -> t <> ticket) !tickets;
if Ticket.removeVehicle ticket then
begin
let diff = Ticket.getEndTime ticket -. Ticket.getStartTime ticket in
let minutes = int_of_float (diff /. 60.0) in
Vehicle.setTotalParkingTime minutes;
print_string "Payment ticket information....\n";
print_string (Ticket.toString ticket ^ "\n")
end
else
begin
print_string "Fail to remove existing ticket! Try again!\n";
tickets := ticket :: !tickets
end
end
with _ ->
print_string "An error occurs!\n"
请帮我检查并修复这个问题,使项目可以运行。我尝试修复它好几个星期但没有成功。提前谢谢您。
您的问题实际上并不在于
end
,而是在您的代码的早期部分:
let ticket = Ticket.(setId (Int64.of_float (Unix.time ())));
这不是有效的语法。而是使用
let ... in ...
:
let ticket = Ticket.(setId (Int64.of_float (Unix.time ()))) in