1

次のコードを検討してください。

let list1 = [1; 2; 3; 4; 5];;
let getThird3 = function 
  |[] ->[];
  | _::_::l3::t -> t;;
getThird3 list1;

fsharpi を実行している端末に貼り付けると、このエラーが表示されます

> let list1 = [1; 2; 3; 4; 5];;

val list1 : int list = [1; 2; 3; 4; 5]

> let getThird3 = function 
-  |[] ->[];
-  | _::_::l3::t -> t;;

let getThird3 = function 
----------------^^^^^^^^

/Users/nickolasmorales/stdin(17,17): warning FS0025: Incomplete pattern matches on this expression. For example, the value '[_;_]' may indicate a     case not covered by the pattern(s).

val getThird3 : _arg1:'a list -> 'a list

助言がありますか?TAB とスペースのみの両方を使用してみましたが、関数の後に何も認識しません。

4

1 に答える 1

3

これは単なる警告です:

これを行うgetThird3 [1;2]と、matchfailureException が発生します。

警告は、警告のベースとして特定の場所を選択する必要があり、functionおそらく他の場所と同じくらい優れています。

警告を削除するには、一致を次のように変更します

| _::_::l3::t -> t;;
| _ -> failwith "not a long enough list"
于 2016-02-04T01:53:10.617 に答える