Xon.sh 和管道中的 Lambda 别名
Posted
技术标签:
【中文标题】Xon.sh 和管道中的 Lambda 别名【英文标题】:Lambda alias in Xon.sh and pipes 【发布时间】:2018-09-18 13:20:12 【问题描述】:为什么这段代码的运行方式不同。
samuel@corny ~ $ echo "pippo\npluto\nminnie\ntopolino" | @(lambda a,s=None: s.read())
pippo
pluto
minnie
topolino
第二条命令
samuel@corny ~ $ echo "pippo\npluto\nminnie\ntopolino" | @(lambda a,s=None: s.readlines())
pippo
pluto
python readlines 是否对逐行读取输入管道不正确。
我的 Xon.sh 版本是 0.7.8
【问题讨论】:
【参考方案1】:所以这有点微妙,但是callable aliases(其中 lambda 是其中一种)有几种不同类型的对象可以返回。其中一个是(stdout, stderr, returncode)
的元组。
str.readlines()
方法返回一个列表,在本例中为['pippo\n', 'pluto\n', 'minnie\n', 'topolino\n']
。所以,这里,
stdout = "pippo\n"
stderr = "pluto\n"
returncode
从未被打印出来,但这里恰好是 "minnie\n"
这可能不是预期的行为,也是第一个示例有效的原因。
【讨论】:
以上是关于Xon.sh 和管道中的 Lambda 别名的主要内容,如果未能解决你的问题,请参考以下文章