繁体   English   中英

我怎样才能解决 Ocaml 的类型错误?

[英]How can I get arround Ocaml's type error?

我有这个警告,我想知道他为什么要等待Unix.file_descr list * Unix.file_descr list * Unix.file_descr list类型的表达式

这是 function,如果您需要更多代码,请问我。

let rec run()=

 let a = create_bloc() in
 trace_bloc(a);
 let b : char ref = ref 'f' in
 while true do
 b := 'f';
 if !(a.s) = 1 then run() else
   let c = get_move() in
   if c = Some 'z' then b:= 'z'
   else if c = Some 'q' then b:= 'q'
   else if c = Some 's' then b:= 's'
   else if c = Some 'd' then b:= 'd';
   if !b = 'z' || !b = 's' then
     if !(a.o) = 4 && !b = 'z' then begin erase_bloc(a) ;a.o := 1; trace_bloc(a); end
     else if !b = 'z' && !(a.o) <> 4 then begin erase_bloc(a); a.o := !(a.o)+1; end;
   if !b = 's' && !(a.o)=1 then begin erase_bloc(a);a.o := 4;trace_bloc(a);end else
     if !b = 's' && !(a.o) <> 1 then begin erase_bloc(a); a.o := !(a.o)-1;trace_bloc(a);end
     else if !b = 'd' || !b = 'q' then
       decal(a,!b);
   dep_bas(a);
   Unix.select [] [] [] 0.35;
 done;
;;

Unix.file_descr list * Unix.file_descr list * Unix.file_descr list类型是表达式Unix.select [] [] [] 0.35;

OCaml 不允许您忽略由 function 返回的类型不是unit的值。 但是,您可以使用ignore function 明确告诉编译器您不需要select function 的结果,

ignore (Unix.select [] [] [] 0.35);

您还可以使用Unix.sleepf function 实现支持小数秒的睡眠,例如,您可以将上面的表达式替换为,

Unix.sleepf 0.35

这也会暂停您的程序 350 毫秒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM