Gần đây tôi đã viết các bit sau của Scala:Tùy chọn có bao gồm một giá trị một mẫu hay không?
val f: File = ... // pretend this file came from somewhere
val foo = toFoo(io.Source.fromFile(f).mkString)
tôi thực sự không thích cách này chảy. Để hiểu những gì đang xảy ra, bạn phải bắt đầu với f
ở giữa, đọc bên trái để fromFile
, đọc ngay để mkString
, đọc lại một lần nữa để toFoo
. Ugh.
Đặc biệt là sau khi quen với việc chuyển đổi chức năng của chuỗi, điều này rất khó đọc. Lần thử tiếp theo của tôi trông giống như sau:
val foo = Some(f)
.map(io.Source.fromFile)
.map(_.mkString)
.map(toFoo)
.get
Tôi thích luồng này tốt hơn nhiều. Bạn có thể thấy điều gì xảy ra Đây có phải là cách sử dụng tốt của lớp học Option
không? Hay tôi lạm dụng nó? Có một mô hình tốt hơn mà tôi có thể sử dụng để đạt được cùng một luồng không?
đó là đoạn trích mà tôi đưa vào mọi dự án tôi viết! Nên ở trong thư viện chuẩn thực sự ... –
@Kevin - Đồng ý, nó phải ở trong thư viện chuẩn. Tôi cũng có nó trong tất cả các dự án của mình vì tôi có một thư viện chuẩn mà tôi bỏ vào mọi dự án tôi viết, và đây là một trong những thứ trong đó. –
Phiên bản cập nhật cho thế hệ hiện tại: 'lớp ẩn Piper [A] (a: A) {def |> [B] (f: A => B) = f (a)} mở rộng AnyVal' –