Транскрипт: Как проверить пустой список? - PullRequest
0 голосов
/ 18 сентября 2018

Это простая программа на Python, которая вызывает бесконечный цикл при компиляции с Transcrypt 3.7.5:

stack = [ch for ch in "Hello"]
while stack:
    print(stack.pop())

Это можно решить, заменив while stack: на while len(stack):, но это будет только неприемлемообходной путь.Есть ли другой прагма-переключатель, связанный с Transcrypt, чтобы обойти это?

Ответы [ 2 ]

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

Используйте прагму для включения правдивости:

http://www.transcrypt.org/docs/html/special_facilities.html#automatic-conversion-to-truth-value-pragma-tconv-and-pragma-notconv

# __pragma__ ('tconv')

stack = [ch for ch in "Hello"]
while stack:
    print(stack.pop())

Это напечатает:

o
l
l
e
H

Вы также можете использовать -tили --tconv переключатель командной строки, как описано в:

http://www.transcrypt.org/docs/html/installation_use.html#available-command-line-switches

Transcrypt стремится поддерживать 90% CPython по умолчанию и дополнительные 9% в качестве опций с помощью прагмы и переключателей командной строки.

Идея состоит в том, что компиляция со значениями по умолчанию дает вам быстрый и компактный код, и что некоторые механизмы, которые дорого поддерживать с помощью JavaScript, можно активировать в качестве опций.Например, это относится к перегрузке оператора.

См. Также:

http://www.transcrypt.org/docs/html/what_why.html#what-is-transcrypt

и

http://www.transcrypt.org/docs/html/differences_cpython.html

Есть полностьюсовместимый браузер Pythons, например PyPyJS:

https://pypyjs.org/

Однако загрузка страницы, использующей это, занимает очень много времени, что для наших нужд было неприемлемо, поскольку мы используем это для производства в реальной жизни.проекты.В общем, если вы собираетесь использовать это профессионально, стоит прочитать документы.Должен сказать, что сам редко читаю какую-либо документацию, но в этом случае она окупается.

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

Это просто несоответствующий интерпретатор Python, если он зацикливается с предоставленным кодом.Интерпретатор CPython не будет зацикливаться бесконечно (test.py содержит код в вопросе):

PS C:\Users\Matt> python test.py
o
l
l
e
H
PS C:\Users\Matt>

Было бы сложно предложить обходной путь, так как при использовании интерпретатора, не соответствующего требованиям, все ставки отключены.

Отказ от ответственности: я мало знаю о Transcrypt, но вам, вероятно, следует открыть отчет об ошибке

...