1

私はこの機能を持っています:

let myFunction list (var1, var2) : bool =
    for (x,y) in list do
        match (var1, var2) with
        | (1, 11) | (2, 22) -> true
        | (_, _) ->
            if not (x = y) then
                true // error is here
            false

これは、返される値が unit ではなく bool 型であると関数が想定していることを示すエラーを返します。私が達成したいのはx != y、ループがそこで停止するようにいつでも true を返すことです。それ以外の場合は、最後に false を返します。

4

3 に答える 3

4

F# では、if ステートメントで戻ることができます。その結果、を単独で配置する場合は、一致する false を配置して、戻りブールtrueの両側がそのようになるようにする必要があります。if

        if not (x = y) then
            true 
        else false
于 2013-10-05T07:56:51.617 に答える
1

一致が見つかったらすぐに検索を停止したい場合は、次のようにしてみてください。

let myFunction list (var1, var2) : bool =
    match (var1, var2) with
    | (1, 11) | (2, 22) -> true
    | _ -> Seq.exists (fun (x, y) -> x <> y) list

Seq.existsブール値を返す関数を受け取り、関数が返す要素が見つかるまでリストを調べます。trueその場合、それ自体が を返しtrueます。そのような要素が見つからずにリストの最後に到達すると、 が返されfalseます。

于 2013-10-05T08:44:21.583 に答える