Tôi chắc chắn có lý do chính đáng cho việc này, nhưng tôi không thấy nó.Option.fold - tại sao đối số thứ hai của nó không phải là toán tử nhị phân?
Fold
trên (nói) List
lợi nhuận
kết quả của việc áp dụng lần hành
op
giữa tất cả các yếu tố vàz
Nó có một mối quan hệ rõ ràng với foldLeft
và foldRight
rằng làm điều tương tự nhưng với thứ tự được xác định (và do đó không cần các toán tử liên kết)
Fold
trên Option
lợi nhuận
Trả về kết quả của việc áp dụng
f
-scala.Option
này giá trị 's nếuscala.Option
là không rỗng. Nếu không, hãy đánh giá biểu thứcifEmpty
.
ifEmpty
là (ở vị trí) z
cho danh sách. f
là (ở vị trí của) các op
Đối None
(trong đó, sử dụng mô hình tinh thần của tôi về Option
như là một "container" có thể có hoặc không có thể chứa một giá trị, là một "trống rỗng" thùng chứa), mọi thứ là OK , Option.fold
trả về số không (giá trị của ifEmpty
).
Đối Some(x)
, tuy nhiên, không f
nên mất hai params, z
và x
vì vậy nó phù hợp với fold
trên chuỗi (bao gồm cả việc có một mối quan hệ tương tự như foldLeft
và foldRight
).
Chắc chắn có một đối số tiện ích chống lại điều này - có f
chỉ cần x
làm tham số trong thực tế có thể thuận tiện hơn. Trong hầu hết các trường hợp, nếu nó cũng mất z
sẽ bị bỏ qua. Nhưng vấn đề nhất quán quá ...
Vì vậy, ai đó có thể giải thích cho tôi tại sao fold
trên Tùy chọn vẫn là "thích hợp" fold
?
Nhưng 'Một số lần gấp # có 2 đối số. https://github.com/scala/scala/blob/v2.11.3/src/library/scala/Option.scala#L1 Tôi xin lỗi tôi không hiểu câu hỏi – Jatin
Nó thực sự có hai đối số; nhưng các đối số chỉ nằm trong các danh sách đối số riêng biệt. – Jesper
Tôi hỏi tại sao đối số thứ hai không phải là toán tử nhị phân. Không phải lý do tại sao nếp gấp lại có hai đối số - như bạn nói, nó có! –