我是新的reason/ocaml /函數式編程。追加到現有的列表/數組
我知道List.append
和[] @ []
但這些函數將創建新的列表,但如何填充現有的列表/數組?
- 填充列表的最佳方式是什麼?
- 填充數組的最佳方式是什麼?意思是如果座標類型是
let coords: array point = [];
- 或者這對於這種情況是錯誤的流程(算法)?
原因代碼:
type point = {x: int, y: int};
let coords: list point = [];
let append raw =>
Array.iter
(
fun data => {
let p = {x: data.x, y: data.y};
/* how to append p to coords */
()
}
)
raw;
JS模擬:
const coords = [];
const append = raw => raw.forEach({x, y} => {
coords.push({
x: process(x),
y: process(y)
});
});
令人討厭的簡單答案:在FP中,您不需要單獨的'coords',因爲它是'raw'的精確副本。只要繼續使用生。 – Yawar
@Yawar我有更新的代碼。例如 - coords包含了處理過的xy(意思是不完全複製) – tuchk4
看到Cheng Lou的回答,它很全面,但總之你會做一些像'List.map(fun {x,y} => {x:process x ,y:process y})raw' – Yawar