1

私はリストを持っています

derp = [1; をさせてください。2; 3; 4; 5];;

私はこの言語の初心者なので、これはばかげているように思えるかもしれませんが、中間値 (3) だけが必要な場合、どのように返すのでしょうか?

4

3 に答える 3

2

Listモジュールを使用してもかまわない場合は、次のように実行できます。

List.nth derp (List.length derp / 2);;
于 2013-10-16T13:13:01.137 に答える
0

これを行うには多くの方法があります。あなたのコメントで、このリストには常に 5 つの要素があると言いました。

  1. まず、Pavel ソリューションを使用できますList.nth derp (List.length derp / 2);。関数に入れたい場合は、let middle list = List.nth list(List.length derp / 2);

  2. 2 番目の解決策は、パターン マッチングを使用することです。

    let middle list = match list with | [] -> 0 | p :: q :: r :: s :: t -> r

    ここで、リストが Int のリストであると仮定していることに注意してください

  3. 3 番目は最初の 1 ソリューションの書き直されたバージョンですが、ここではリストの長さを知っていると思います。

    let rec middle list n = if(n == 0) if(list.isEmpty) failwith "Empty List" else list.head else middle list (n - 1)

于 2013-10-16T13:31:12.797 に答える