Lisp-从输入读取和存储2个值
我想使用lisp从用户输入中读取2个值。我想将这些存储在变量中,以便在程序中使用它们 到目前为止,我拥有当前代码:Lisp-从输入读取和存储2个值,lisp,common-lisp,Lisp,Common Lisp,我想使用lisp从用户输入中读取2个值。我想将这些存储在变量中,以便在程序中使用它们 到目前为止,我拥有当前代码: (defun le-posicao() (let ((n_anel) (pos_anel)) (princ "?") (setf n_anel (read)) (setf pos_anel (read)) (when (and (integerp (n_anel)) (integerp (pos_anel)))
(defun le-posicao()
(let ((n_anel)
(pos_anel))
(princ "?")
(setf n_anel (read))
(setf pos_anel (read))
(when (and (integerp (n_anel)) (integerp (pos_anel)))
n_anel pos_anel)))
我使用let函数创建局部变量,然后我想将从输入中读取的值存储在其中
我的问题是,如何从输入中读取两个值,并将第一个值存储在一个变量中,第二个值存储在另一个变量中?这些值应采用以下格式:
? value1 value2
有人能帮帮我吗?您正试图强制使用Lisp。虽然这是可能的,但可能会有点痛 为了使代码更具功能性,您应该创建名称并将值绑定到它们,而不是创建变量然后对其进行变异 澄清一下,
let
是一种特殊形式,而不是函数;它们用于创建名称到值的词汇范围绑定
我相信你真正想做的是:
(let ((n_anel (read))
(pos_anel (read)))
(... code using but not modifying n_anel and pos_anel ...))
此代码避免了setf
注: 不确定Common Lisp的
let
中的括号——我最近一直在使用Clojure
也不确定您是否正确使用了
阅读。您试图强制使用Lisp。虽然这是可能的,但可能会有点痛
为了使代码更具功能性,您应该创建名称并将值绑定到它们,而不是创建变量然后对其进行变异
澄清一下,let
是一种特殊形式,而不是函数;它们用于创建名称到值的词汇范围绑定
我相信你真正想做的是:
(let ((n_anel (read))
(pos_anel (read)))
(... code using but not modifying n_anel and pos_anel ...))
此代码避免了setf
注:
不确定Common Lisp的let
中的括号——我最近一直在使用Clojure
也不确定您是否正确使用了读取
。使用此方法,我只能从输入中读取最后一个值。我想将第一个值存储在n_anel变量中,将第二个值存储在pos_anel上。问题是我没有返回包含两个值的列表,因此只能看到最后一个值。现在问题解决了,非常感谢。你应该使用let*
而不是let
let
并行执行绑定,let*
顺序执行绑定。使用此方法,我只能从输入中读取最后一个值。我想将第一个值存储在n_anel变量中,将第二个值存储在pos_anel上。问题是我没有返回包含两个值的列表,因此只能看到最后一个值。现在问题解决了,非常感谢。你应该使用let*
而不是let
let
并行执行绑定,let*
按顺序执行绑定。