首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ELisp:如何在'else'块中执行多个表达式?

在ELisp中,可以使用progn来在else块中执行多个表达式。progn是一个特殊的表达式,它允许你在一个单独的表达式中组合多个表达式。这是一个示例:

代码语言:lisp
复制
(if (> 10 5)
    (progn
      (print "10 is greater than 5")
      (print "This is the second expression in the progn block"))
  (progn
    (print "10 is not greater than 5")
    (print "This is the second expression in the else block")))

在这个示例中,我们使用if语句来检查10是否大于5。如果是,我们使用progn来执行两个表达式:打印"10 is greater than 5"和"This is the second expression in the progn block"。如果不是,我们使用else块中的progn来执行两个表达式:打印"10 is not greater than 5"和"This is the second expression in the else block"。

这个示例展示了如何在ELisp中在else块中执行多个表达式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

008. Emacs 之光的成长历程

更令人好奇的是,嘉宾如何在短期内熟悉 Emacs 源码并为之贡献多个 patch,相信通过嘉宾的学习、贡献经历,可以给听众打开 Emacs 源码的神秘面纱,让更多用户参与到 Emacs 的贡献,一个多小时的分享...时间线 • 00:00:56 嘉宾自我介绍 • 00:02:20 Emacs 初相识 • 00:10:08 ELisp 学习经历 • 00:15:45 Emacs 的可发现性 Discoverability...到现在差不多四年 • 个人博客[4] • 配置 lunarymacs[5] • 对 Emacs 仓库的提交记录[6] • 28 版本新增的 shortdoc[7],解决手册冗长,提供简洁的示例代码 •正则表达式两处文档...最后有个句号,句号后两个空格 • 注释用的是 C 风格的 /* */ ,而不是 C++ 的 // • 函数名后面跟一个空格,再是括号 •读 Emacs 源码技巧 • lisp.h[12] 里面有 C 如何调用 ELisp...emacstalk.github.io/post/002/ [8] 34.3 Regular Expressions: https://www.gnu.org/software/emacs/manual/html_node/elisp

40210

Emacs Lisp

中表示注释 ;; 在Elisp做运算,调用函数的最简单的方式是 ;; (function arg1 arg2) ;; 这相当于通常的function(arg1,arg2),下面的表达式,对两个数字进行加法运算...(+ 2 2) ;; Elisp表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; 在lisp-interaction-mode模式,我们可以直接计算一个表达式,计算的方法是 (+ 3...,也就是Emacs窗口的最底部那行显示计算结果 ;; ELisp的赋值函数是是setq,下面的表达式给变量my-name赋值"Bastien" (setq my-name "Bastien") ;;...C-x C-e来定义函数和执行ELisp指令 ;; 在Elisp中直接输入函数的名称就是调用该函数。...;; let函数首先定义local-name变量的值为“you” ;; 然后接着执行括号其它的语句部分,这个功能和progn类似 (let ((local-name "you")) (switch-to-buffer-other-window

2.2K30
  • Emacs Lisp2

    ;; 在Elisp做运算,调用函数的最简单的方式是;; (function arg1 arg2) ;; 这相当于通常的function(arg1,arg2),下面的表达式,对两个数字进行加法运算(+...2 2);; Elisp表达式可以通过括号来嵌套(+ 2 (+ 1 1));; 在lisp-interaction-mode模式,我们可以直接计算一个表达式,计算的方法是(+ 3 (+ 1 2));...;; ELisp的赋值函数是是setq,下面的表达式给变量my-name赋值"Bastien"(setq my-name "Bastien");; ^ 把光标停在这里,再键入C-x C-e;; 下面insert...C-x C-e来定义函数和执行ELisp指令;; 在Elisp中直接输入函数的名称就是调用该函数。...; let函数首先定义local-name变量的值为“you”;; 然后接着执行括号其它的语句部分,这个功能和progn类似(let ((local-name "you"))(switch-to-buffer-other-window

    98240

    Emacs 28 新特性介绍

    这篇文章就来介绍 Emacs 28 ,笔者个人觉得比较实用的功能,完整列表可参考 NEWS[3] ( M-x view-emacs-news ),最后会介绍如何在 macOS 上编译。...它可以把解释执行elisp 代码通过 gccjit 技术直接编译成二进制代码。...C-x u u 表示 C-x u C-x u • 新主题 modus-vivendi 与 modus-operandi • 新 major mode lisp-data-mode 适用于 lisp 表达式...,但不是可执行的程序,比如 .dir-locals.el • transient.el[9],就是 magit 中菜单导航使用的库,我的配置[10]中大量使用。...positional 参数已经被淘汰 编译方式 看了上面那么多新功能,读者可能已经按捺不住内心的喜悦,这里就来介绍如何在 macOS 编译 28 版本,其他操作系统方式类似。

    96530

    Emacs Lisp

    中表示注释 ;; 在Elisp做运算,调用函数的最简单的方式是 ;; (function arg1 arg2) ;; 这相当于通常的function(arg1,arg2),下面的表达式,对两个数字进行加法运算...(+ 2 2) ;; Elisp表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; 在lisp-interaction-mode模式,我们可以直接计算一个表达式,计算的方法是 (+ 3...,也就是Emacs窗口的最底部那行显示计算结果 ;; ELisp的赋值函数是是setq,下面的表达式给变量my-name赋值"Bastien" (setq my-name "Bastien") ;;...C-x C-e来定义函数和执行ELisp指令 ;; 在Elisp中直接输入函数的名称就是调用该函数。...;; let函数首先定义local-name变量的值为“you” ;; 然后接着执行括号其它的语句部分,这个功能和progn类似 (let ((local-name "you")) (switch-to-buffer-other-window

    2.3K40

    unittest系统(六)如何在一个测试类多个测试用例执行只初始化和清理一次?

    前言 之前分享了一系列的文章,分别从原理,运行,断言,执行,测试套件,如何跳过用例来讲解unittest,那么我们继续分享 正文 我们首先看下下面的代码 import unittestclass...self.assertEqual(1, 1) self.assertFalse(False)if __name__=="__main__": unittest.main() 我们执行下...我们发现在初始化的时候呢,我们每次都会初始化,但是在实际的测试呢,我们可能会是有些参数或者动作只需要做一次即可,那么我们只能在用例初始化一次。那么unittest里面有没有这样的方法 呢?...我们将这些代码带入到我们的测试用例,看下效果会如何。...self.assertEqual(1, 1) self.assertFalse(False)if __name__=="__main__": unittest.main() 我们执行下看下最后的效果

    1.8K30

    《Python入门06》揭秘Python条件&断言&循环语句!!

    2、python的if...else...语句,该语句的意思就是说:如果if语句后面的语句是真,那么执行if下面的语句,反之执行else下面的语句。...一种这样的需求是为序列(或其他可迭代对象)每个元素执行代码。...代码可用于条件语句和循环中,还可用于函数和类定义(这将在本书后面介绍)。 条件语句:条件语句根据条件(布尔表达式)决定是否执行后续代码。...通过使用if/elif/else,可将多个条件语句组合起来。条件语句的一个变种是条件表达式a if b else c。...最好尽早将错误揪出来,免得它潜藏在程序,直到带来麻烦。 循环:你可针对序列的每个元素(特定范围内的每个数)执行代码,也可在条件为真时反复执行代码

    2.7K30

    30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

    FSF 执行董事 Zoë Kooyman 表示:“Protesilaos 对于那些社区刚起步的人来说是一个非常鼓舞人心的榜样。...如此一来,文档的显示内容就和实际程序的执行内容融合了起来,毫无隔阂滞碍。...Dired 可以逐个标记条目,也可以使用正则表达式和其他高级命令。 记录一组以 Dired 为起点的操作(「键盘宏」),跳转至特定文件,执行某些变更、返回文件管理器,再在下一个文件重复这个过程。...除此之外,底层配置也全部在 Elisp 完成,这又进一步简化了整体效果。在使用 Emacs 之前,我往往得为每个应用程序使用不同的范式和 / 或语言。...例如,我的 Elisp 学习之路就是从编写小型函数封装开始,用于调整某些默认操作的执行方式。我想补充“move down a line”(下移一行)命令的功能,让它能支持下移特定多行。

    37630

    【Java 基础篇】Java 条件语句详解:让你轻松入门编程世界

    ; } else if 语句 当我们需要在多个条件之间进行判断时,可以使用 else if 语句。它允许我们在前面的条件不满足时检查另一个条件。...以下是 else if 语句的语法结构: if (条件1) { // 如果条件1为真,执行这里的代码 } else if (条件2) { // 如果条件1不满足,而条件2为真,执行这里的代码...以下是 switch 语句的语法结构: switch (表达式) { case 值1: // 如果表达式的值等于值1,执行这里的代码 break; case...值2: // 如果表达式的值等于值2,执行这里的代码 break; // ......希望这篇文章帮助你更好地理解 Java 的条件语句,并了解如何在实际编程中使用它们。无论你是编程初学者还是有一些经验,掌握条件语句都将使你在编程领域更加自信。

    30410

    用c语言手搓一个500+行的类c语言解释器: 给编程初学者的解释器教程(5)- 语法分析2

    ,这里看看statement的实现,以及如何在语法分析的同时解释执行: 这里使用的方法是,对于流程控制语句,在语法分析的时候就进行条件判断,如果if判断失败或者while不进入循环,就跳过该语句不进行语法分析...代码: 在一个statement通过花括号包含多个语句 double statement() { if (token == '{') { match('{');...,因此如果不需要解释执行执行某一个语句,就调用函数 skipStatments() 跳过该语句,不对其进行语法分析,不解释执行;(在if语句和while语句中使用): ......赋值语句 赋值语句的左边可以是数组中间的一个单元,也可以是一个变量,右边是字符串或表达式、字符。 (在下一篇文章还会提及具体变量赋值的实现) 数组需要先定义才能进行赋值。 ......定义函数语句 定义函数的时候并不执行函数体,所以同样跳过语句; ...

    79900

    Dart-流程控制语句

    前言 流程控制语句是编程中用于控制代码执行流程的语句 在 Dart 和 JavaScript ,流程控制语句的基本类型是相似的 包括条件语句( if 和 switch)和循环语句( for、while...和 do-while) 和其他的编程语言都大差不差easy就完事了 条件语句(if) if 语句用来判断一个布尔表达式的值是否为 true 如果为 true,则执行 if 语句的代码,否则执行 else...语句的代码 if 语句的语法如下: if (布尔表达式) { // 如果布尔表达式为 true 则执行该代码 } else { // 如果布尔表达式为 false 则执行该代码 } 示例代码...{ print("a < b"); } } 条件语句(if-else) if-else 语句用来判断一个布尔表达式的值是否为 true 如果为 true,则执行 if 语句的代码,否则执行...else 语句的代码 if-else 语句的语法如下: if (布尔表达式) { // 如果布尔表达式为 true 则执行该代码 } else if (布尔表达式) { // 如果布尔表达式

    19710

    一名Clojurian的Emacs配置

    完成这个教程,大体不会对elisp犯怵了。接下来,只需要使用c-h v和c-h f查看elisp定义的变量函数就能很快上手自行配置。...幸运的是,有人已经很好地解决了这部分问题,use-package就是非常好用的包,它将包的配置和包的定义聚合到了一,并且保证包一定会安装在你的系统当中。...这种时候,我们就要求助于elisp的文档了。在emacs按下c-h i获取主话题(topic)的菜单,然后点击Elisp进入它的操作指南。...换句话说,除非你想编译包含上述代码的文件,否则它的作用和progn一模一样,顺序地求值包含其中的表达式。...当你正在编译文件的时候,包宏就会原地展开,然后被eval-when-compile宏加载进内存并被编译成字节码,供后续解析器执行

    2.8K20

    python if 语句,布尔运算

    一:     if 语句:     作用:让程序根据条件选择性的执行某条语句或某些语句     语法:     if 真值表达式1:             语句1...     ...elif 真值表达式2:             语句2....         ............     else:             语句n.........     ...说明:         1,真值表达式判断会自上而下进行,如果有一条为True则执行其中的语句,然后结束if 语句的执行,如果所有的真值表达式都为False。...2,elif 子句可以有0个,1个,或多个         3,else 子句可以有0个或多个 if语句的嵌套 if语句本身是由多条语句组成的一条复合语句 if语句可以作为语句嵌套到另一个语句的内部...2、使用缩进来划分语句,相同缩进数的语句在一起组成一个语句。 3、在Python没有switch – case语句。 :输入一个正整数,判断这个数是基数还是偶数,打印出结果。

    85630

    C语言常用的知识没多少之C语言的三大结构

    有人发现生活的所有事情都离不开顺序、选择和循环。烧水有它相应的流程(顺序);在十字路口有多个可选的路;每天太阳从东边升起、西边落下。至今还没有能够找到超出这三种可能性的事情。...如果当中有一条语句执行,即对应的表达式不为0的话,后面的表达式不会被计算,任何的语句都不被执行。...一般表达式的内容是对一个变量的多种情况的考虑或多个变量的并列情况考虑,很少或极少是对多个变量分散情况的考虑,即表达式独立的考虑多个变量的某一个或多个,相应之间没有变量的重叠。...if...else if...else语句可以被多个if...else语句或if语句替换,但考虑到if...else if...else语句一旦有一个语句执行,其它的判断会被终止,节省计算机的计算时间...而多个if...else语句或if语句会判断每个表达式的值,一般情况下会造成计算机资源的浪费,所以能用if...else if...else语句的就用if...else if...else语句。

    1.3K30

    包教包会!7段代码带你玩转Python条件语句(附代码)

    [ 导 读 ]条件语句通过一个或多个布尔表达式执行结果(真值或假值)决定下一步的执行方向。所谓布尔表达式,即对某个对象进行布尔运算,产生一个bool值。...如果条件表达式返回的结果为真,则执行if前面的操作语句1,否则执行else后面的操作语句2。 if-else语句使用单行形式的目的主要在于增加代码的简洁性,其基本使用方法代码清单②所示。...需要说明,if语句还有一种形式是if-if-else,这一形式的if可以有多个,从而实现多分支。...在try语句中,except与else代码都是可选的。except代码可以有0或多个else代码可以有0或1个。...代码清单⑤所展示的异常之间的层次差别是有意义的,这在程序执行过程可以体现,代码清单⑥所示。

    1.8K30

    通过函数调用进行字符串替换

    在 Emacs ,有如下几种文本替换的函数: • replace-string 字面量替换 • replace-regexp[1] 正则表达式替换 静态替换是最常见的,比如将 foobar 替换成 FOObar...M-x replace-regexp RET regexp RET newstring RET 如果输入的 newstring 是以 \, 开头,那么后面就可以跟一个表达式,为了用上匹配的文本,有一些特殊字符...比如有如下文本: 123 456 789 执行 M-x replace-regexp RET [0-9]\{3\} RET \,(+ \#& \#&) 后,会得到: 246 912 1578 在写 Lisp...这是在 Lisp 写正则比较容易出错的一点,Manual 的相关资料: • Syntax for Strings (GNU Emacs Lisp Reference Manual)[2] • Regexps...for Strings (GNU Emacs Lisp Reference Manual): https://www.gnu.org/software/emacs/manual/html_node/elisp

    6610

    包教包会,7段代码带你玩转Python条件语句

    导读:条件语句通过一个或多个布尔表达式执行结果(真值或假值)决定下一步的执行方向。所谓布尔表达式,即对某个对象进行布尔运算,产生一个bool值。...如果条件表达式返回的结果为真,则执行if前面的操作语句1,否则执行else后面的操作语句2。 if-else语句使用单行形式的目的主要在于增加代码的简洁性,其基本使用方法代码清单②所示。...需要说明,if语句还有一种形式是if-if-else,这一形式的if可以有多个,从而实现多分支。...这也是在Python Shell执行程序错误后所出现的出错打印信息的由来。 在try语句中,except与else代码都是可选的。except代码可以有0或多个else代码可以有0或1个。...代码清单⑤所展示的异常之间的层次差别是有意义的,这在程序执行过程可以体现,代码清单⑥所示。

    2.5K10

    【深入浅出C#】章节 3: 控制流和循环:条件语句

    如果条件为真,则执行if代码的语句;如果条件为假,则执行else代码的语句。...条件表达式可以是任何返回布尔值的表达式,例如比较表达式、逻辑表达式等。 如果条件表达式为真,执行if代码的语句。if代码是在条件为真时执行的代码,它可以包含一个或多个语句。...如果条件表达式为假,跳过if代码执行else代码的语句(如果存在)。else代码是在条件为假时执行的代码,它也可以包含一个或多个语句。...由于x的值为10,满足条件,因此执行if代码的语句,输出"x大于5"。如果x的值为3,则不满足条件,跳过if代码执行else代码的语句,输出"x不大于5"。...每个else if语句都有自己的条件表达式,只有在前面的条件不满足时才会执行。 使用else if语句,我们可以实现多个条件的判断,并根据不同的条件执行不同的代码逻辑。

    27810
    领券