之前的主题 https://v2ex.com/t/743574
吸取了大家的建议,做了一个更好用的管道出来。根据测试,性能损耗在纳秒级,我个人觉得应该可以忽略。
还是老样子,不多说,直接看代码。仓库在 https://github.com/abersheeran/cool
from functools import reduce
from cool import F, FF
range(10) | F(filter, lambda x: x % 2) | F(sum) == 25
(1, 2) | FF(lambda x, y: x + y) == 3
range(10) | F(reduce, lambda x, y: x + y) == 45
range(10) | F(reduce, lambda x, y: x + y, ..., 10) == 55
square = F(pow, ..., 2)
range(10) | F(map, square) | F(sum) == 285
用 http://coconut-lang.org/ 写一个可能更清晰一些的对比样例。
range(10) |> map$(pow$(?, 2)) |> list
上面那个代码等价于下面这个
range(10) | F(map, F(pow, ..., 2)) | F(list)
另外吐槽一下 coconut 的编译结果,惨不忍睹。我都想写个 Python 超集出来编译一波了(在学了、在学了)。
1
SjwNo1 2021-04-19 16:18:42 +08:00
cool
... 没太懂,表示占位吗 |
2
abersheeran OP @SjwNo1 是的。在仓库 README 里有解释的。
|
3
hanyceZ 2021-04-20 13:32:01 +08:00
给大佬点个赞
|
4
listenerri 2021-04-20 18:01:42 +08:00
不明觉厉,点个赞
|
5
abersheeran OP @listenerri 用就完事!
|