在书籍“使用OCaml开发应用程序”中,关于返回值有以下解释:
我在代码中一直遇到这个警告,很明显我并不真正了解OCaml中返回值的工作原理。
感谢您的帮助。
我不明白为什么As the value preceding a semicolon is discarded, Objective CAML gives a warning when it is not of type unit.
# print_int 1; 2 ; 3 ;; Characters 14-15: Warning: this expression should have type unit. 1- : int = 3 To avoid this message, you can use the function ignore: # print_int 1; ignore 2; 3 ;; 1- : int = 3`
2
的返回值与unit
不同会成为问题,因为我的意图不是返回2
,而是返回3
。据我理解,在最后一条指令之前的任何指令都不是函数的返回值,那么为什么会出现警告呢?我在代码中一直遇到这个警告,很明显我并不真正了解OCaml中返回值的工作原理。
感谢您的帮助。
let g () = let f x y = x + y in let _ = f 2 in f 1 2
- ygreklet g () = let f x y = x + y in ignore (f 2); f 1 2
,你可以得到它。 - akoprowskiignore
在编译器中是特殊处理的。 - ygrek