我有一個型別串列(int * float) list。
所以,據我了解(我是新來的OCaml /函式式編程)串列的結構是這樣的:[(3, 1.0); (4, 2.0); (6, 0.1)]。
現在我想訪問串列中每個元組中的第一個元素。
我會對示例解決方案和解釋感到滿意。
uj5u.com熱心網友回復:
@glennsl 在關于學習資源的評論中的建議是正確的。
如果您想要一個獲取由每個元組中的第一個元素組成的串列的示例:
List.map (fun (i, _) -> i) [(3, 1.0); (4, 2.0); (6, 0.1)]
List.map將函式應用于串列中的每個元素并構建結果值的串列。這是一個簡單的概念,很容易在幾行代碼中實作。
let rec my_map f lst =
match lst with
| [] -> []
| first::rest -> f first :: my_map f rest
或者更簡潔地使用function:
let rec my_map f =
function
| [] -> []
| first::rest -> f first :: my_map f rest
如果我們進行評估,my_map (fun (i, _) -> i) [(3, 1.0); (4, 2.0); (6, 0.1)]它會得出類似的結果:
my_map (fun (i, _) -> i) [(3, 1.0); (4, 2.0); (6, 0.1)]
3 :: my_map (fun (i, _) -> i) [(4, 2.0); (6, 0.1)]
3 :: 4 :: my_map (fun (i, _) -> i) [(6, 0.1)]
3 :: 4 :: 6 :: my_map (fun (i, _) -> i) []
3 :: 4 :: 6 :: []
[3; 4; 6]
匿名函式fun (i, _) -> i是一個接受兩個元素的元組并回傳第一個元素的函式。第二個對我們來說并不重要,所以我們使用_而不是給它一個名字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/368107.html
上一篇:將兩個數字的串列轉換為陣列的索引
