F# 在for循环中增加1

F# 在for循环中增加1,f#,F#,我有这样一个简单的for循环 let mutable index = 0 let mutable indx = 0 for c in list do //some code index <- indx indx <- indx + 1 让可变索引=0 设可变indx=0 对于列表中的c //一些代码 指数为什么你不做没有突变的功能性方法 let my_predicate item = // some condition on item let index

我有这样一个简单的for循环

let mutable index = 0
let mutable indx = 0
for c in list do 
    //some code
    index <- indx
    indx <- indx + 1
让可变索引=0
设可变indx=0
对于列表中的c
//一些代码

指数为什么你不做没有突变的功能性方法

let my_predicate item = // some condition on item

let index = list |> Seq.findIndex my_predicate

// index will be bound to the first item in list for which my_predicate returns true

如果您只是试图查找序列中某个项目的索引,那么Plindh有一个惯用的解决方案。但我想我会解释为什么你的方法行不通。在F#中,没有办法提前退出循环(即,没有
break
/
continue
)。通常,您会使用递归来完成以下任务:

let tryFindIndex f list =
  let rec loop i = function
    | [] -> None
    | head::tail when f head -> Some i
    | _::tail -> loop (i + 1) tail
  loop 0 list

//Usage
[1; 2; 3; 4; 5] |> tryFindIndex (fun x -> x = 3)
> val it : int option = Some 2