返回第一百四十九章:自动重算  四合院:谢採购的科技帝国首页

关灯 护眼     字体:

上一章 目录 下一页

最新网址:m.92yanqing.net

公式解析器的成功,如同为“yh-calc”注入了理解人类数学语言的灵魂。抽象的语法树(ast)清晰地勾勒出每个公式的內在逻辑结构。然而,让这套静態的“骨骼”真正血肉丰满、运转起来的,是接下来的核心魔法——自动重算。

当a1单元格的数值从10变为5时,如何让所有依赖a1的公式,如“=a1+b2”、“=c1*a1”,都能自动、高效地更新结果?这正是表格程序区別於简单计算器的精髓所在。

有了依赖关係图和拓扑排序的理论指导,软体组的开发工作进入了快车道。徐工將团队分成了几个小组,一组负责在语法树构建完成后,遍歷ast,提取出该公式所引用的所有单元格,从而在依赖关係图中建立相应的边(即依赖关係)。另一组则专注於实现拓扑排序算法,根据依赖关係图,计算出正確无误的计算序列。

真正的挑战在於“动態”二字。

调试间里,原型机的屏幕上显示著那个10x10的测试网格。徐工正在测试一个简单的依赖链:在a1输入10,b1输入“=a1+5”,c1输入“=b1*2”。初始状態,一切正常,b1显示15,c1显示30。

“现在,修改a1的值为20。”谢明华下达指令。

徐工操作。a1的值被修改。按照设计,系统检测到a1的变化,立刻启动重算流程。依赖关係图显示,受影响的单元格是b1和c1。拓扑排序给出的计算顺序是:先b1,后c1。

屏幕上,b1的值闪烁了一下,更新为25。紧接著,c1的值也隨之更新为50。

整个过程流畅,几乎没有可感知的延迟。

“成功了!”小张忍不住低呼。

但徐工没有放鬆,他提出了更复杂的情况:“谢主任,如果用户修改的不是基础数据,而是一个公式本身呢?比如,把b1的公式从『=a1+5』改成『=a1*2』。”

这是一个关键测试。修改公式,意味著b1的依赖关係发生了变化(虽然依旧依赖a1,但计算逻辑变了),也可能引入新的依赖(如果新公式引用了其他单元格)。

本章未完,点击下一页继续阅读。(1 / 2)

『加入书签,方便阅读』

上一章 目录 下一页