0

関数 numofday を別の関数の 2 つの変数に適用して、指定された 2 日間の間の日数を返します。関数自体はそれほど重要ではありません。これはより構文的なものだと思います。質問ですが、グーグルはあまり生産しませんでした。

私がやりたいことは次のようなものです(これは私が試したもので、明らかにうまくいきませんでした)

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 です。

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 に答える