1
私が取り組んでいる少しの試合では、プレイヤーの名前を読みたいと思います。私はこれまでに2つの解決策を持っていますが、どちらも少し面倒です。バージョン1つの軍に加えて、彼/彼女はより多くのプレーヤーを追加したいと述べるユーザー:ユーザーからのループ内でのデータの読み込み
(defun read-player()
(loop :while (y-or-n-p "Add another player?")
:do (format t "~& Name of player #~D: " (1+ (length players)))
:collect (read-line) :into players
:finally (print players)))
バージョン2 format
表現の重複を必要とします:
(defun read-player2()
(let ((players '()))
(format t "~& Name of player #~D: " (1+ (length players)))
(loop :for player = (read-line)
:until (string= player "")
:collect player :into players
:do (format t "~& Name of player #~D: " (1+ (length players)))
:finally (print players))))
は私の2つのアプローチの合成があります?追加の質問と繰り返しコードをユーザーに迷惑をかけることはありませんか?
パーフェクト:あなたの
read-players
も、より読みになるだろう、あなたが
format
魔法が好きであれば、のような機能を追加したりすることは比較的一般的です!それは私が逃したものです。 –
'READ-LINE'の前に' FINISH-OUTPUT'を置いてください。また、 '' APPLY''の代わりに ''〜? ''を' 'ASK-USER''で使うこともできます。それでは、新鮮/コロン/等を入れましょう。そこ。 – jkiiski
@jkiiski:ご意見ありがとうございます – sds