Trong Nick Partridge's presentation on deriving scalaz, dựa trên một phiên bản cũ của scalaz, ông giới thiệu kiểm chứng thực bằng cách sử dụng chức năng:scalaz 7 tương đương của `<|*|> 'từ scalaz 6
def even(x: Int): Validation[NonEmptyList[String], Int] =
if (x % 2 == 0) x.success else { s"not even: $x".wrapNel.failure }
Sau đó, ông kết hợp này sử dụng
even(1) <|*|> even(2)
áp dụng thử nghiệm và trả về xác thực với thông báo lỗi. Sử dụng scalaz 7 Tôi nhận được
scala> even(1) <|*|> even(2)
<console>:18: error: value <|*|> is not a member of scalaz.Validation[scalaz.NonEmptyList[String],Int]
even(1) <|*|> even(2)
^
Tương đương scalaz 7 của tổ hợp này là gì?
Bạn sẽ không muốn sử dụng '| @ |' điều hành? Video bạn đăng không đề cập đến nó nhưng bạn có thể tìm hiểu thêm về nó ở đây: http://eed3si9n.com/learning-scalaz/Validation.html – mjaskowski
Cụ thể là bạn có thể viết 'scala> (thậm chí (1) | @ | even (2) | @ | even (3)) {_ + _ + _} '' Thất bại (NonEmptyList (thậm chí không: 1, thậm chí không: 3)) 'và ' scala> (thậm chí (2) | @ | thậm chí (4) | @ | thậm chí (6)) {_ + _ + _}) '' Thành công (12) ' –
mjaskowski
@mjaskowski' | @ | 'là rất chung chung và trong trường hợp bạn chỉ muốn để nối hai giá trị trong một bộ tuple, 'tuple' (trước đây được gọi là' <|*|> ') là thích hợp hơn. –