6

私の値を負の数と一致させるパターンマッチングを取得する方法はありますか? 負の数が何であるかは関係ありません。負の数と一致する必要があります。

この単純なコードで私が望むことを達成しました:

let y = if(n < 0) then 0 else n in   
match y with  
0 -> []  
| _ -> [x] @ clone x (n - 1)

しかし、そのステートメントを削除して、ステートメントifの別のケースとしてチェックするようにしたいだけですmatch

4

3 に答える 3

11

はい、ガードを使用してください:

match n with
    _ when n < 0 -> []
  | _ -> [x] @ clone x (n - 1)
于 2010-04-29T21:38:20.313 に答える
9

次のように、コードを少しきれいにすることができます。

match n < 0 with
| true -> []
| false -> [x] @ clone x (n - 1)

さらに良いのは次のとおりです。

if n < 0 then [] else [x] @ clone x (n - 1)

一般に、if ステートメントは、単純な論理テストの一致よりも明確です。

私たちがそれに取り組んでいる間、次::の代わりに使用することもできます@:

if n < 0 then [] else x :: clone x (n - 1)
于 2010-04-30T02:04:13.523 に答える
0

いつキーワードがあります。頭で(今はテストできません)

y=nを|と一致させます n<0->0の場合| 0-> [] | _-> [x] @ clone x(n-1)

ただし、あなたの例でさえうまくいかないはずです。一方ではintを返し、もう一方ではリストを返します。

于 2010-04-29T21:37:20.333 に答える