1

次のコードを実行してi、スクラッチ バッファーと ielm repl の両方の 15 個の連続した値を出力しました。

    (defvar i 0)
    (while (< i 15)
       (print i)
       (setq i (+ i 1)))`

私がスクラッチ バッファと repl の両方で気づいたことは、どちらも sexp の結果の値のみを示しているということです。出力された値は、バッファiに送信されます。Messages

  1. 少なくともreplの場合、replにi印刷された値を取得するにはどうすればよいですか?
  2. 他にうまくいった解決策がある場合は、お知らせください。

ターミナルとUbuntu 12.04 LTSを介してemacs 24.3を使用していることに注意してください。助けてくれてありがとう!

さらに、print私たちのドキュメントから:

print is a built-in function in `C source code'.

(print OBJECT &optional PRINTCHARFUN)

Output the printed representation of OBJECT, with newlines around it.
Quoting characters are printed when needed to make output that `read'
can handle, whenever this is possible.  For complex objects, the behavior
is controlled by `print-level' and `print-length', which see.

OBJECT is any of the Lisp data types: a number, a string, a symbol,
a list, a buffer, a window, a frame, etc.

A printed representation of an object is text which describes that object.

Optional argument PRINTCHARFUN is the output stream, which can be one
of these:

   - a buffer, in which case output is inserted into that buffer at point;
   - a marker, in which case output is inserted at marker's position;
   - a function, in which case that function is called once for each
     character of OBJECT's printed representation;
   - a symbol, in which case that symbol's function definition is called; or
   - t, in which case the output is displayed in the echo area.

If PRINTCHARFUN is omitted, the value of `standard-output' (which see)
is used instead.
  1. 私は Lisp の実用的な側面に慣れていないので、別のバッファーに出力するにはどうすればよいですか?
4

2 に答える 2

2

with-output-to-string本当に必要な場合は、次を使用できます。

(with-output-to-string
    (setq i 0)
    (while (< i 15)
      (princ i)
      (setq i (+ i 1))))
于 2013-08-24T12:50:35.783 に答える