2016-11-07 35 views
6

Bir proje üzerinde çalışıyorum ve Varlıklar ve Öznitelikler oluşturmak için gerçekten kompakt bir yöntem oluşturmak istiyorum.İşlevselliği ve Pipeline işlecini birleştirin F #

Bunu boru hattı operatörü ile yapmak istiyorum. Fakat bu işleve fazladan işlevsellik eklemek istiyorum. örneğin gibi

: Bu örnekte

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

| >> varlık için bir öznitelik eklemek için işlevselliği ile birlikte bir boru hattı operatörü olacaktır.

Bunun çalıştığını biliyorum:

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

o yardım

için

|> addAttr 

ile

|>> 

Teşekkür değiştirmek mümkün olup olmadığını yüzden bilmek istiyorum, olduğu

(Ben yapmıyorum Bu bile mümkün olup olmadığını Sadece bu şekilde tanımlayabiliriz

cevap

9

) biliyorum:

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

bu işe yarar, teşekkürler! – BrechtL

4

okunabilirliği için, şiddetle basit işlevi yapacak zaman özel operatörleri ekleyerek vazgeçirmek. addAttr'un bir boru hattında kullanımını daha kolay hale getirmek için yazdırabilirsiniz:

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

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

Bir noktanız var, hala farklı olasılıklara bakıyorum. Ve bunlardan biri özel operatörlerle olacak, diğeri de belirttiğiniz yönde bir şey olacak. – BrechtL