我正在开发一个项目,我想创建一个非常紧凑的方法来创建实体和属性。
我想用管道运营商做这件事。但我想为此运营商添加额外的功能。
例如:
let entity = (entity "name")
|>> (attribute "attr" String)
|>> (attribute "two" String)
在此示例中|>>将是一个管道操作符以及向该实体添加属性的功能。
我知道这有效:
let entity = (entity "name")
|> addAttr (attribute "attr" String)
所以我想知道的是,如果可以替换
|> addAttr
带
|>>
感谢您的帮助
(我不知道这是否可能)
答案 0 :(得分:9)
你可以简单地定义它:
let (|>>) e a = e |> addAttr a
答案 1 :(得分:4)
为了便于阅读,我强烈建议在简单函数执行时添加自定义运算符。您可以更改addAttr
的编写方式,以便在管道中更容易使用:
let addAttr name attrType entity = () // return an updated entity
let e =
entity "name"
|> addAttr "attr" String
|> addAttr "two" String