我可以使用python创建从左到右的功能管道DSL吗?

问题描述

https://dev.to/xtofl/comment/14ihn

在倡导无点组合函数的同时,我建立了一个Pipeline类;但是我注意到我无法完全直观地做到这一点。

double = lambda x: x*2
inc = lambda x: x+1
repeat = lambda n: (lambda s: s * n)

pipeline = Pipeline() | int | inc | double | str | repeat(3)

#calling... right to left :(
assert pipeline("1") == "444"
assert pipeline("20") == "424242"

我想添加例如rshift运算符,但实际上它需要多次调度或其他操作,我不知道如何实现:

class Pipeline:
        def __rshift__(arg,self):
                return self(arg)

...
"20" >> pipeline

这显然是错误的:unsupported operand type(s) for >>: 'str' and 'Pipeline'

还有另一种方法可以实现“注入”函数参数吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)