Tôi đang đọc blog này post tuyên bố Futures
không phải là "chức năng" vì chúng chỉ là trình bao bọc của các tính toán có hiệu lực phụ. Ví dụ: chúng chứa các cuộc gọi RPC, yêu cầu HTTP, v.v. Có đúng không?Tương lai ở Scala có thực sự hoạt động không?
Các bài viết trên blog đưa ra ví dụ sau đây:
def twoUsersFeed(a: UserHandle, b: UserHandle)
(implicit ec: ExecutionContext): Future[Html] =
for {
feedA <- usersFeed(a)
feedB <- usersFeed(b)
} yield feedA ++ feedB
you lose the desired property: consistent results (the referential transparency). Also you lose the property of making as few requests as possible. It is difficult to use multi-valued requests and have composable code.
tôi sợ tôi không nhận được nó. Bạn có thể giải thích cách chúng tôi mất consistent result
trong trường hợp này không?
Cảm ơn bạn. Bây giờ nó là rõ ràng. Tôi thích ý tưởng tách tính toán biểu đạt và thực thi nó. Sẽ xem xét 'Free monad' – Michael