Лямбда-псевдоним в Xon.sh и трубы - PullRequest
0 голосов
/ 18 сентября 2018

Почему эта часть кода не выполняется одинаково.

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

Является ли питон readlines некорректным для строки чтенияВыровняйте строку ввода.

Моя версия Xon.sh - 0.7.8

.

1 Ответ

0 голосов
/ 26 сентября 2018

Так что это несколько неуловимо, но вызываемые псевдонимы (которые являются одним типом лямбд), имеют несколько различных типов объектов, которые они могут возвращать. Одним из которых является кортеж (stdout, stderr, returncode).

Метод str.readlines() возвращает список, который в данном случае равен ['pippo\n', 'pluto\n', 'minnie\n', 'topolino\n']. Итак,

  • stdout = "pippo\n"
  • stderr = "pluto\n"
  • returncode никогда не печатается, но бывает "minnie\n" здесь

Это, вероятно, не предполагаемое поведение, и именно поэтому первый пример работает.

...