打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
扩展标准库而不是修改标准库

有一些用户反馈这个问题时还能保持礼貌,而有一些用户就直接飙脏话对我进行辱骂,仿佛更新标准库 —— 侵犯了他什么神圣的权利。

我今天特别解释一下这个问题:

1、aardio 并没有自动升级的功能,一定是你手动点击更新 —— 标准库才会更新。如果你主动去更新标准库,又不想标准库被更新,这是非常矛盾的一个需求。

2、如果你想扩展标准库的功能,你并不需要修改标准库。只要简单的增加一个新的库,继承并扩展原来的库函数即可。


我举个简单的例子,例如我现在想扩展一下 com.excel 里的 SaveAs 函数,增加保存 pdf 的功能,那么可以新建一个库,我随便取个名字,例如就叫 com.excel2,然后我们编写代码如下:

import com.excel;namespace com{   class excel2{    ctor( ... ){      this = ..com.excel( ... )    };  }  SaveAs = function(path,format){ if(!#path) error('请指定保存路径',2); if(format===null){ var ext = ..string.match(path,'[^.]+$'); if( ext ){ format = ( { pdf = 0/*_xlTypePDF*/; xps = 1/*_xlTypeXPS*/; xls = 0x2B/*_xlExcel9795*/; xlsx = 0x33/*_xlOpenXMLWorkbook*/; xlsm = 0x2E/*_xlXMLSpreadsheet*/; xlsb = 0x32/*_xlExcel12*/; } ) [..string.lower(ext)]; }; } path = ..io.fullpath(path); if(format<=1) return owner.ActiveWorkbook.ExportAsFixedFormat(format,path); return owner.ActiveWorkbook.SaveAs(path,format ); };}/**intellisense()com.excel2() = 创建 Excel 对象\n!excel.end intellisense**/

你可能会想为什么不直接加到标准库呢?!首先 Excel 存为 pdf 是个不常见的操作 ,90%的人用不到你的代码却要执行你的代码其实也不公平。另外你要更愉快地保存为 pdf ,其实还有个更复杂的 ExportAsFixedFormat2 函数,复杂到你可以去实现一个新的库 —— 可能代码比 com.excel 还要长。我们编写标准库 —— 就要随时控制我们可能无限膨胀的欲望,保持一个库主要只做一件事。

上面是一个类库,如果是普通的静态名字空间,扩展就更容易,例如我们要在 console 库里增加一个 log2 函数,可以增加一个库叫 console2 ,然后代码这样写:

import consoleconsole2 = console;
console2.log2 = function(...){ }


那么如果你要对标准库进行较大的修改,或者改动一些库文件内部私有函数要怎么办呢?!这时候你也可以直接复制标准库的源代码,改一个库名称,然后想怎么改就怎么改。

真的任何时候你都完全没有必要去直接改动标准库文件。我们编程就是解决各种各样的问题,而不是给自己不必要地制造麻烦。

不要误解:aardio 不是不愿意改进标准库,实际上 aardio 更新非常活跃,我仅仅是想提醒大家 —— 不要局限于用标准库解决问题。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于 aardio 开发桌面应用,我有几点要补充的...
aardio + Python 开发桌面软件快速入门
aardio 🔊 专注于桌面软件开发,17年一直保持非常活跃地更新( 更新日志
用VBA打开、关闭、新建、保存和删除Excel工作簿 | VBA实例教程
VB中调用电子表格SAVE或SAVEAS时总弹出警告,如何处理
读写 txt aardio
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服