2014-05-11 114 views

回答

1

由於不是很「實用」,但有效的解決方案,你可以使用Array.LastIndexOf

+2

什麼不功能有關?它與任何Seq,List或Array函數一樣功能,不會改變輸入。 – Jwosty

+0

我不認爲這將與lambda一起使用 –

2

如果扭轉數組不剪你的,你怎麼樣寫一個自己?

let findLastIndex f arr = 
    let rec inner f arr idx = 
     match idx with 
     | _ when idx >= 0 -> 
     if f (arr.[idx]) 
      then Some idx 
      else inner arr f (idx - 1) 
     | _ -> None 
    inner f arr (Array.length arr - 1) 

沒有測試它,但這樣的事情應該工作。

順便說一句,你給了一個列表,而不是你的例子中的數組。您可以使用[| |]來定義數組文字。

1

有對於沒有內置功能,但你可以很容易地用自己的方式結合到它:

[1;2;3;5;2;7] |> List.rev |> List.findIndex (fun x -> x = 2) 

然而,這仍返回1,因爲第二到最後一個元素是1

順便說一句,你的列表是列表,而不是一個陣列,但它會爲數組是類似的:

[|1;2;3;5;2;7|] |> Array.rev |> Array.findIndex (fun x -> x = 2)