F# 在for循环中增加1
我有这样一个简单的for循环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
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