Как я прерываю Ctrl-G в Emacs

Из здесь и здесь : (после того, как я погуглил ваш заголовок)

  • Альтернативный ключ - альтернативным ключом является любой ключ-кандидат, который не выбран в качестве первичного ключа
  • Ключ-кандидат - Ключ-кандидат - это поле или комбинация полей, которые могут выступать в качестве поля первичного ключа для этой таблицы, чтобы однозначно идентифицировать каждую запись в этой таблице.
  • Составной ключ - составной ключ (также называемый составным ключом или составным ключом) - это ключ, который состоит из 2 или более атрибутов.
  • Первичный ключ - первичный ключ - это значение, которое можно использовать для идентификации уникальной строки в таблице. Атрибуты связаны с ним. Примерами первичных ключей являются номера социального страхования (связанные с конкретным человеком) или номера ISBN (связанные с конкретной книгой). В реляционной модели данных первичный ключ - это ключ-кандидат, выбранный в качестве основного метода уникальной идентификации кортежа в отношении.
  • Суперключ - Суперключ определяется в реляционной модели как набор атрибутов переменной отношения (relvar), для которого он считает, что во всех отношениях, присвоенных этой переменной, нет двух разных кортежей (строк), имеющих одинаковые значения для атрибутов в этом наборе. Эквивалентно, суперключ также может быть определен как набор атрибутов relvar, от которого функционально зависят все атрибуты relvar.
  • Внешний ключ - внешний ключ (FK) - это поле или группа полей в записи базы данных, которая указывает на ключевое поле или группу полей, образующих ключ другой записи базы данных в некоторой (обычно другой) таблице. Обычно внешний ключ в одной таблице относится к первичному ключу (PK) другой таблицы. Таким образом, ссылки могут быть сделаны, чтобы связать информацию вместе, и это является важной частью нормализации базы данных

7
задан Mwiza 12 December 2017 в 09:57
поделиться

2 ответа

Вы можете использовать with-local-quit для определения if Cg был нажат:

Отредактированное решение для проглатывания выхода, предложенное efunneko .

(defun my-c-g-test ()
  "test catching control-g"
  (interactive)
  (let ((inhibit-quit t))
    (unless (with-local-quit
              (y-or-n-p "arg you gonna type C-g?")
              t)
      (progn
        (message "you hit C-g")
        (setq quit-flag nil)))))

Примечание: with-local-quit возвращает значение последнего выражения , или nil , если нажата Cg , поэтому обязательно возвращайте что-то отличное от nil, когда не нажата Cg . Я нашел документацию elisp по выходу из полезной. Связанная с этим область - это нелокальные выходы и, в частности, размотка-защита , которая применяется не только к выходу.

14
ответ дан 6 December 2019 в 09:22
поделиться

case-case и unwind-protect здесь полезны. condition-case позволяет вам «перехватывать» «исключения», одна из которых - quit:

(condition-case
    (while t) ; never terminates
  (quit (message "C-g was pressed")))

Вы также можете перехватывать другие ошибки, такие как «error». Ну наконец то; он выполнит «формы тела», а затем «формы разматывания». Однако «формы размотки» выполняются независимо от того, успешно ли были выполнены «формы тела»:

(unwind-protect
    (while t)
  (message "Done with infinite loop"))

В вашем случае требуется размотка-защита .

6
ответ дан 6 December 2019 в 09:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: