Что делает (интерактивный) средний в функции Lisp Emacs?

Статически типизированные языки, такие как языки C ++, Java и динамически типизированные языки, такие как Python, различаются только в терминах выполнения типа переменной. Статически типизированные языки имеют статический тип данных для переменной, здесь тип данных проверяется во время компиляции, поэтому отладка намного проще ... тогда как динамически типизированные языки не делают то же самое, проверяется тип данных, который выполняет программу, и, следовательно,

Кроме того, они имеют очень небольшую разницу и могут быть связаны с сильно типизированными и слабо типизированными языками. Строго типизированный язык не позволяет использовать один тип как другой, например. C и C ++ ... тогда как слабо типизированные языки позволяют eg.python

28
задан mike 18 December 2008 в 19:34
поделиться

3 ответа

Просто для уточнения (это находится в заключенных в кавычки документах , который Charlie цитирует ) (interactive), не только для ограниченных ключом функций, но и ни для какой функции. Без (interactive), это можно только назвать программно, не от M-x (или через привязку клавиш).

РЕДАКТИРОВАНИЕ: Примечание, что просто добавление", (интерактивное)" к функции, не обязательно заставит его проложить себе путь, любой - могло быть многими причинами, функции не являются интерактивными. Обзор, зависимости, параметры, и т.д.

24
ответ дан Community 14 October 2019 в 10:40
поделиться

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

Взглянули на CTRL-h f interactive для деталей:

    interactive is a special form in `C source code'.
    (interactive args)

    Specify a way of parsing arguments for interactive use of a function.
    For example, write
      (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
    to make ARG be the prefix argument when `foo' is called as a command.
    The "call" to `interactive' is actually a declaration rather than a function;
     it tells `call-interactively' how to read arguments
     to pass to the function.
    When actually called, `interactive' just returns nil.

    The argument of `interactive' is usually a string containing a code letter
     followed by a prompt.  (Some code letters do not use I/O to get
     the argument and do not need prompts.)  To prompt for multiple arguments,
     give a code letter, its prompt, a newline, and another code letter, etc.
     Prompts are passed to format, and may use % escapes to print the
     arguments that have already been read.
19
ответ дан Charlie Martin 14 October 2019 в 10:40
поделиться

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

Например, рассмотрим функцию sum , возвращающую сумму двух чисел.

(defun sum (a b)
  (+ a b))

Вы можете назвать ее как (sum 1 2) , но вы может сделать это только в программе на Лиспе (или в REPL). Если вы используете в своей функции интерактивную специальную форму ,

12
ответ дан 28 November 2019 в 03:01
поделиться
Другие вопросы по тегам:

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