0

我有一个函数 numofday 我想将它应用于另一个函数中的两个变量,它将返回两天之间的天数,函数本身并不重要,我想这更像是一种语法问题,但谷歌并没有产生太多。

我想做的是(这就是我尝试过的,显然没有用)

let daysbetween day1 day2 =
 let x = numofday day1;
 let y = numofday day2;
 x-y;;

我试过删除 let,删除分号,并使用 := 而不是 =,但我似乎无法让它工作。必须有一种方法可以在函数中定义变量。提前致谢。

4

2 回答 2

4

ocaml 的 let 绑定的正确语法是let name=bindng in expr Here is the fixed code for you

let daysbetween day1 day2 =
  let x = numofday day1 in 
  let y = numofday day2 in
  x-y;;

您的具体示例甚至可以通过绑定元组一次分配两个值:

let daysbetween day1 day2 =
  let (x,y) = (numofday day1, numofday day2) in
  x - y
于 2013-03-15T02:07:43.723 回答
2

以 rgrinberg 的回答为基础:
OCaml 中的单个分号与 Java 或 C 中的分号非常不同。

在您的情况下,您似乎将分号的功能解释为语句的结束标记。
但是,分号用作表达式的分隔符。并且 OCaml 期望分号前的值是单位类型 (),副作用函数通常会返回。

表达方式:

();();();.....();x;;

具有 x 的值。

那怎么用呢?

let x = 1;;
let y = 
    print_string("assigning x to y\n");
    x;;
于 2013-03-15T04:55:16.597 回答