在 F# 中组合功能和管道运算符
Combine functionality and Pipeline operator in F#
我正在做一个项目,我想创建一个非常紧凑的方法来创建实体和属性。
我想和管道操作员一起做这件事。但是我想给这个运算符添加额外的功能。
例如:
let entity = (entity "name")
|>> (attribute "attr" String)
|>> (attribute "two" String)
在此示例中 |>> 将是管道运算符以及向实体添加属性的功能。
我知道这行得通:
let entity = (entity "name")
|> addAttr (attribute "attr" String)
所以我想知道的是,如果可以替换
|> addAttr
和
|>>
感谢帮助
(我不知道这是否可能)
你可以简单地这样定义它:
let (|>>) e a = e |> addAttr a
为了可读性,我强烈反对在一个简单的函数就可以的情况下添加自定义运算符。您可以更改 addAttr
的编写方式,使其更易于在管道中使用:
let addAttr name attrType entity = () // return an updated entity
let e =
entity "name"
|> addAttr "attr" String
|> addAttr "two" String
我正在做一个项目,我想创建一个非常紧凑的方法来创建实体和属性。
我想和管道操作员一起做这件事。但是我想给这个运算符添加额外的功能。
例如:
let entity = (entity "name")
|>> (attribute "attr" String)
|>> (attribute "two" String)
在此示例中 |>> 将是管道运算符以及向实体添加属性的功能。
我知道这行得通:
let entity = (entity "name")
|> addAttr (attribute "attr" String)
所以我想知道的是,如果可以替换
|> addAttr
和
|>>
感谢帮助
(我不知道这是否可能)
你可以简单地这样定义它:
let (|>>) e a = e |> addAttr a
为了可读性,我强烈反对在一个简单的函数就可以的情况下添加自定义运算符。您可以更改 addAttr
的编写方式,使其更易于在管道中使用:
let addAttr name attrType entity = () // return an updated entity
let e =
entity "name"
|> addAttr "attr" String
|> addAttr "two" String