我正在做一个项目,我想创建一个真正紧凑的方法来创建实体和属性。
我想对管道操作符这样做。但是我想为这个操作符添加额外的功能。
例如:
let entity = (entity "name")
|>> (attribute "attr" String)
|>> (attribute "two" String)
在本例中|>>将是一个管道操作符,并具有向实体添加属性的功能。
我知道这是有效的:
let entity = (entity "name")
|> addAttr (attribute "attr" String)
所以我想知道的是,是否有可能替换
|> addAttr
|>>
Thanks for the help
(我不知道这是否可能)
您可以简单地这样定义:
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