Lisp变量在定义中使用自身

锅炉

我正在使用LTK库在Lisp中构建窗口应用程序。我想要一个可以执行动作并可能隐藏自身的按钮。但是,此代码:

(let* ((left (button 0 0 f "←" #'(lambda ()
                                   (decf start page-length)
                                   (funcall redraw)
                                   (if (>= start page-length)
                                       (ltk:configure left :state :visible))
                                       (ltk:configure left :state :hidden))))))

声称“ left”是一个未定义的变量(其余部分在代码中定义,超出了此问题的范围)。

在最坏的情况下,我避免使用我编写的“按钮”功能,并针对这种特殊情况重新编写代码,但是该情况提出了一个通用的解决方案。Lisp中有什么方法可以在变量定义中的函数中使用变量?

除夕夜

let*仅具有一个绑定的A与绑定相同letlet执行主体之前,绑定不存在。在执行button引用期间,left必须来自较早的闭包或left在对表达式求值后创建的全局引用你可以这样做:

(let ((left nil))
  (setf left (button 0 0 f "←" #'(lambda ()
                                   (decf start page-length)
                                   (funcall redraw)
                                   (if (>= start page-length)
                                       (ltk:configure left :state :visible)
                                       (ltk:configure left :state :hidden))))))

注意:存在一个错误if,使得lambda始终会执行(ltk:configure left :state :hidden)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在变量定义中使用变量

来自分类Dev

如何修改在循环中使用自身的 Cow 变量?

来自分类Dev

自己定义中使用的变量?

来自分类Dev

在普通Lisp中使用变量作为值创建关联列表

来自分类Dev

在Common Lisp中使用变量作为值创建关联列表

来自分类Dev

Lisp(Allegro Common Lisp)如何在Lambda中使用带'vs#'的变量

来自分类Dev

在python中使用未定义的变量

来自分类Dev

在PHP中使用after定义的变量

来自分类Dev

在SAS用户定义函数中使用变量

来自分类Dev

在Proc定义中使用变量的值

来自分类Dev

在数组中使用定义的变量

来自分类Dev

在多行中使用变量在gnumake中定义

来自分类Dev

在TFS工作项定义中使用变量

来自分类Dev

JsRender在FOR中使用自定义变量

来自分类Dev

在Lisp中使用AND

来自分类Dev

在lambda中使用其自身的初始化程序中的“自动”变量

来自分类Dev

在php标头中使用自定义定义的变量

来自分类Dev

在构建定义需求中使用用户定义的变量

来自分类Dev

如何指定内联类型中使用的类型变量,与函数定义中使用的类型变量相同?

来自分类Dev

如何指定内联类型中使用的类型变量,与函数定义中使用的类型变量相同?

来自分类Dev

在Emacs Lisp中使用查找

来自分类Dev

在maxima中使用Lisp代码

来自分类Dev

在Emacs Lisp中使用查找

来自分类Dev

在变量中使用变量

来自分类Dev

在变量中使用变量

来自分类Dev

在变量中使用变量

来自分类Dev

在capistrano 3自定义任务中使用dotenv变量

来自分类Dev

在用户窗体中定义要在模块中使用的变量

来自分类Dev

如何在WIX中使用Candle定义项目变量?