Есть ли в Rust эквивалент синтаксиса понимания списка в Python?

Проблема в том, что привязки переменных Emacs Lisp по умолчанию динамические. То есть, когда функция оценивается, связанные переменные просматриваются не в среде, где была определена функция, но в среде, где была вызвана функция.

Emacs 24 или позже поддерживает лексическую привязку (т. е. функция видит переменные, которые были связаны вокруг определения функции ) изначально, но поскольку она изменяет семантику существующего кода, вам необходимо явно ее включить. Обычно это делается путем добавления локальной переменной файла в первую строку файла .el:

;; -*- lexical-binding: t; -*-

Другой альтернативой является использование lexical-let из библиотеки cl. Это работает и в предыдущих версиях Emacs. Обратите внимание, что таким образом вы явно указываете, какие переменные должны иметь лексическую привязку, поэтому код, такой как (lexical-let ((foo foo)) ...), не является редкостью - foo - это существующая переменная, которая должна быть «перенесена» в функцию.

17
задан Darkaird 8 October 2019 в 06:58
поделиться