Đây là một ví dụ về mã hiện tại của tôi:Hiện erlang có một danh sách ẩn trong danh sách?
DataSet = [1,2,3,4,5,6,7,8,9].
Sequence = [3,4,5,6].
ReducedDataSet = lists:foldl(fun(SeqNumber, Output) ->
Row = lists:nth(SeqNumber, DataSet),
[Row|Output]
end,
[],
Sequence
).
ReducedDataSet kết thúc lên như [6,5,4,3] và nếu tôi thay đổi nó vào danh sách: foldr, ReducedDataSet sẽ là [3,4,5 , 6].
Tôi không mong đợi điều này như khi hấp thu trái sang phải, giá trị thứ 3 là 3 và nên tiến hành đến 6, nhưng khi hấp thụ phải sang trái, giá trị thứ 3 sẽ là 7, và tiến tới 4.
Điều này có nghĩa là có một số hàng ẩn trong danh sách của tôi, và foldl và foldr chỉ khác nhau theo thứ tự sắp xếp của danh sách cuối cùng?
Hãy suy nghĩ điều này trả lời câu hỏi của tôi là tốt nhất tôi đã hỏi nó. Câu trả lời khác là một lời nhắc nhở nhanh về nếp gấp, nhưng như tôi đã nhận ra, câu trả lời là để nhớ rằng đó là danh sách: thứ n đã xác định vị trí trong danh sách. – Philbo
Tôi cũng không phải là người hâm mộ về cách chúng tôi hiện đang viết các chức năng đa dòng - cách tôi viết nó ở trên chỉ phản ánh cách chúng tôi hiện đang thực hiện. Sẽ gửi liên kết của bạn về phía trước để cấp cao của tôi, xem nếu nó làm cho một lập luận thuyết phục hơn tôi đã quản lý. – Philbo
@Philbo Không phải ai cũng đồng ý với tôi rằng việc phân hủy mọi thứ là một ý tưởng hay. Tôi đã thấy rằng các hàm rất thường được đặt tên dễ dàng hơn để xử lý (và tìm tái sử dụng ở đâu đó) so với các nội dung vui nhộn, và trong hầu hết các trường hợp gán một nhãn có ý nghĩa cho một hàm ẩn danh khác trong hàm lớn hơn. Những khả năng đọc này sẽ thắng * thực sự * cộng thêm theo thời gian, đặc biệt khi bạn quay lại làm lại một số mã cũ. Đối với phong cách chung, tôi đã viết một dự án ví dụ cho mục đích đó dựa trên lời khuyên có sẵn của graybeard: https://github.com/zxq9/zuuid – zxq9