Я понимаю , что nil
, 0
и / или -1
используются для отключения некоторых функций и t
, 1
и / или +1
используются для включения некоторых функций. Какой выбор выбрать при назначении переменных или включении / отключении второстепенных режимов?
Я видел все эти варианты, используемые в той или иной точке. Это заставляет меня задуматься, а есть ли разница между ними? Я видел, что иногда использование 0
не работает для меня, а nil
делает. Есть ли различия в том, где они используются?
Ответы:
TL; DR
Прежде чем устанавливать какую-либо переменную, вы должны знать, как эта переменная должна интерпретироваться. Точно так же, прежде чем вызывать какую-либо функцию (включая те, которые используются для переключения второстепенных режимов), вы должны знать, как интерпретируются аргументы этой функции.
Используйте C-hfи C-hvдля просмотра документации по рассматриваемой функции или переменной. Следует указать ожидаемые значения.
«Не ноль» означает буквально все, что не является
nil
. Это включает0
и отрицательные числа.Незначительные режимы
Давайте возьмем конкретный пример. Введите C-hf
blink-cursor-mode
и нажмите, RETчтобы увидеть документацию по функциям дляblink-cursor-mode
:Мы можем включить режим Blink Cursor любым из следующих способов:
Обратите внимание, что аргумент
t
будет работать, хотя в строке документа это не упоминается. Хотя это часто имеет место, ваша самая безопасная ставка - использовать то, что подсказывает вам строка документа, что в данном случае является положительным значением.Также обратите внимание, что аргумент
nil
будет работать. Я настоятельно рекомендую противnil
этого, потому что это делает ваше намерение неясным. Если бы я просматривал ваш код lisp и увиделnil
аргумент, я бы предположил, что вы хотите отключить второстепенный режим.Мы также можем отключить
blink-cursor-mode
следующими способами:Еще раз обратите внимание, что
nil
это не один из способов отключить этот второстепенный режим. Это верно почти для любого второстепенного режима, с которым вы столкнетесь.переменные
Теперь давайте посмотрим на пример переменной. Введите C-hv
truncate-lines
и нажмите, RETчтобы посмотреть документацию для переменнойtruncate-lines
:Вы можете включить усечение любым из следующих способов:
Это может удивить вас, что
0
и-1
будет работать. Опять же, я бы рекомендовал не использовать их, потому что это делает ваши намерения неясными.Единственный способ отключить усечение - это
Другими словами, вы можете установить значение,
truncate-lines
равное числам, буквам, строкам, спискам или чему-либо еще, если вы этого не захотите, если только оно не будет оцениватьсяnil
, включит усечение. (Но вы должны действительно придерживатьсяt
или1
).источник
Это все разные вещи. 0, 1 и -1 - разные числа;
nil
это символКаждый из них используется повсюду, для разных вещей. Чтобы узнать, для чего каждый из них используется в определенном контексте , обратитесь к документу для этого контекста . И это включает в себя контексты включения или выключения разных режимов, включения и выключения разных вещей с использованием переменных и множество других контекстов.
В сумме:
Документ для данного режима обычно говорит вам, как включить и выключить его. Если он говорит вам использовать 1 или -1 или
nil
неnil
для чего-то, то это то, что это значит. Существует несколько общих правил включения и выключения режимов (в интерактивном режиме и из кода на Лиспе). Но, похоже, вам действительно нужно начать с получения общего фона.Обратитесь к документу Emacs, чтобы узнать, как запрашивать помощь и другую информацию у самого Emacs : как проверить значение переменной, как просмотреть документ по переменной или функции (включая функцию, которая включает / выключает режим) , и так далее.
Вы можете начать с использования
C-h C-h
( Ctrl-h Ctrl-h), чтобы узнать о справочной системе Emacs. И строить оттуда.C-h r
помещает вас в руководство по Emacs. Попробуйте учебник Emacs:C-h t
. И проверьте страницу Emacs Wiki Newbie и страницу о LearningEmacs .Чтобы начать изучать Emacs Lisp:,
C-h i
выберите руководство по имениEmacs Lisp Intro
и начните чтение. И проверьте страницу Emacs Wiki об изучении Emacs Lisp .источник
nil
логический эквивалент ложных иt
истинных, а остальные просто цифры. Но я не был уверен в том, в каких контекстах они обычно использовались.