0

私は大学のコースで eLISP を学んでいますが、あるプロジェクトでトラブルに遭遇しました。リストとサイズを取得し、そのリストにユーザー入力を入力するメソッドを作成しようとしています。eLISP が実際に入力を要求するのに問題があります。何らかの理由で、インタラクティブな呼び出しが機能していません。「リスト」の代わりに「配列」を使用していることに注意してください。これは、他の 3 つのスクリプトをそのように記述したためです。混乱しすぎて、今は変更できません。

これが私のコードです:

(defun readArray(anArray size)
  (if (>= size 0)
      (progn
        (setq value 0)
        (princ "Enter values maybe?\n") ;;note this line is executed,so I think the prog is working
        (interactive "\nnEnter a value: ")
        (setq anArray (list value (readArray (- size 1)))))))

(readArray 4) を実行すると、次の出力が得られます。

Enter values maybe?
Enter values maybe?
Enter values maybe?
Enter values maybe?
Enter values maybe?
(0 (0 (0 (0 ...))))
4

1 に答える 1

1

これを試して:

(defun read-list (size)
  (if (> size 0)
      (let ((value (read-from-minibuffer "Enter value maybe? " nil nil t)))
        (cons value (read-list (- size 1))))))

read-from-minibufferプロンプトを出力し、ユーザーからの応答を読み取ります。

于 2013-03-14T00:45:23.217 に答える