F#从循环返回

min*_*ime 3 f#

我有以下C++代码,我试图在F#中实现.我收到一条带有F#段的错误消息(if语句之间的行).据我了解,声明"i"不适用于函数而是适用于"for"循环?

C++代码

int move( Board b )
{
    for( int i = 0; i < b.size(); ++i )
        if( b(i) != "*" )
           return i;
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

F#代码

let move (board:array<string>) :int =
    for i = 0 to (board.Length-1) do
        if( Array.item(i) board <> "*" ) then
            i
    done
    -1
Run Code Online (Sandbox Code Playgroud)

Gus*_*Gus 6

你不能在F#中打破循环,但不要担心,当你习惯了F#时你不需要,它实际上更容易:

let move (board:array<string>) :int =
    match Array.tryFindIndex (fun e -> e <> "*") board with
    | Some n -> n
    | None   -> -1
Run Code Online (Sandbox Code Playgroud)