2016-11-07 24 views
6

Tôi đang làm việc trên một dự án và tôi muốn tạo một phương pháp thực sự nhỏ gọn để tạo đối tượng và thuộc tính.Kết hợp chức năng và toán tử đường ống trong F #

Tôi muốn thực hiện việc này với toán tử đường ống. Nhưng tôi muốn thêm chức năng bổ sung cho nhà điều hành này.

Giống như ví dụ:

let entity = (entity "name") 
       |>> (attribute "attr" String) 
       |>> (attribute "two" String) 

Trong ví dụ này | >> sẽ là một nhà điều hành đường ống dẫn cùng với các chức năng để thêm một thuộc tính cho thực thể.

Tôi biết rằng công trình này:

let entity = (entity "name") 
      |> addAttr (attribute "attr" String) 

Vì vậy, những gì tôi muốn biết là, nếu nó có thể thay thế

|> addAttr 

với

|>> 

Thanks for the help

(Tôi không biết nếu điều này thậm chí còn có thể)

Trả lời

9

Bạn chỉ có thể định nghĩa nó như thế này:

let (|>>) e a = e |> addAttr a 
+0

hoạt động, cảm ơn! – BrechtL

4

Đối với khả năng đọc, tôi sẽ mạnh mẽ khuyến khích thêm các nhà khai thác tùy chỉnh khi một chức năng đơn giản sẽ làm. Bạn có thể thay đổi cách addAttr được viết để dễ sử dụng hơn trong đường ống:

let addAttr name attrType entity =() // return an updated entity 

let e = 
    entity "name" 
    |> addAttr "attr" String 
    |> addAttr "two" String 
+1

Bạn có một điểm, tôi vẫn đang tìm kiếm các khả năng khác nhau. Và một trong số họ sẽ được với các nhà khai thác tùy chỉnh và khác sẽ là một cái gì đó theo hướng như bạn đã nêu. – BrechtL

Các vấn đề liên quan