Playframework 这是否可能:`waterballing`游戏框架中的动作组合(Scala)

Playframework 这是否可能:`waterballing`游戏框架中的动作组合(Scala),playframework,Playframework,根据文档,我们可以使用和来“链接”动作组合;但根据我的理解,这些横切的动作组合并不相关。但是,如果一个动作合成需要另一个动作合成的结果来进行进一步分析,那该怎么办呢 您可能会说,我们可以将它们合并到一个操作中,但这样做将打破单一责任和开放-关闭原则 所以这里的问题是:我们如何才能得到动作合成的正确结果,并将其输入到另一个动作合成中?我们能否以任何形式实现以下伪代码: def example=ac2(ac1(param1)){..}//根据请求进行两种类型的分析是,这是可能的 如果您创建了一个动作

根据文档,我们可以使用
来“链接”动作组合;但根据我的理解,这些横切的动作组合并不相关。但是,如果一个动作合成需要另一个动作合成的结果来进行进一步分析,那该怎么办呢

您可能会说,我们可以将它们合并到一个操作中,但这样做将打破单一责任和开放-关闭原则

所以这里的问题是:我们如何才能得到动作合成的正确结果,并将其输入到另一个动作合成中?我们能否以任何形式实现以下伪代码:

def example=ac2(ac1(param1)){..}//根据请求进行两种类型的分析

是,这是可能的

如果您创建了一个动作细化器
ActionRefiner[Request,MyCustomRequest]
,将
请求
转换为自定义请求类型,如
MyCustomRequest
,您可以使用任何其他动作构建器来转换、细化或过滤
MyCustomRequest

如果程序员试图为不同于
MyCustomRequest
的请求链接一个动作函数,那么编译器会抱怨“expecting
MyCustomRequest
actual
request

示例不太好,但请特别查看
ItemAction
,它首先要求请求由
UserAction
转换——我想这可能就是您想要的