news 2026/5/10 7:01:51

详谈:解释器模式(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
详谈:解释器模式(三)

我们接上文来继续讲:

计算符怎么处理呢?计算符左右两边可能是单个数字,也可能是另一个计算公式。但无论是数字还是公式,两者都有一个共同点,那就是他们都会返回一个整数:数字返回其本身,公式返回其计算结果。

所以我们可以根据这个共同点提取出一个返回整数的接口,数字和计算符都作为该接口的实现类。在计算时,使用栈结构存储数据,将数字和计算符统一作为此接口的实现类压入栈中计算。

talk is cheap, show me the code.

数字和计算符公共的接口:

interface Expression { int intercept(); }

上文已经说到,数字和计算符都属于表达式的一部分,他们的共同点是都会返回一个整数。从表达式计算出整数的过程,我们称之为解释(intercept)。

对数字类的解释实现起来相对比较简单:

public class Number implements Expression { int number; public Number(char word) { switch (word) { case '零': number = 0; break; case '一': number = 1; break; case '二': number = 2; break; case '三': number = 3; break; case '四': number = 4; break; case '五': number = 5; break; case '六': number = 6; break; case '七': number = 7; break; case '八': number = 8; break; case '九': number = 9; break; default: break; } } @Override public int intercept() { return number; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 2:29:02

BooleanOperationPolyDataFilter 布尔运算的演示

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkTriangleFilter三角面化,②…

作者头像 李华
网站建设 2026/5/9 1:50:38

Bottle 一条曲线通过旋转形成一个瓶子的mesh

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①围绕某个轴旋转进行模型生成 二&#xff…

作者头像 李华
网站建设 2026/5/10 13:08:38

GalTransl完全攻略:10分钟掌握AI游戏翻译黑科技

还在为日文Galgame看不懂而烦恼?想要亲手汉化心仪的游戏却苦于技术门槛?GalTransl正是为你量身打造的AI自动化翻译解决方案,让游戏汉化变得前所未有的简单高效。 【免费下载链接】GalTransl 支持GPT-3.5/GPT-4/Newbing/Sakura等大语言模型的G…

作者头像 李华
网站建设 2026/5/9 1:50:50

11、Unix文本编辑与文件管理全解析

Unix文本编辑与文件管理全解析 1. vi基础入门 在Unix系统中,vi是一款强大的文本编辑器。下面我们来详细了解如何使用vi创建和编辑文本文件。 - 创建新文件 :若要创建一个名为 sample 的新文件,可在终端输入以下命令: $ vi sample执行该命令后,屏幕会显示类似图4 …

作者头像 李华
网站建设 2026/5/9 1:50:49

vue基于Spring Boot的校园体育器材租赁管理系统_142e9vt2

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华