大数跨境
0
0

避免VB/VBA中无处不在的数据深拷贝,才是提高字符串效率的法门!

避免VB/VBA中无处不在的数据深拷贝,才是提高字符串效率的法门! BtOfficer
2025-06-23
0
导读:函数返回当前函数堆栈数据中,真正有用的,可能是按需返回参数值,或其他运算结果,让函数具有多态性。

前言

在《VB/VBA的连字符&明明是最快的,却背了最慢的锅!》中,BtOfficer给大家介绍了VB/VBA中,&是拼接字符串最快的,但它的光环却被”=“给遮掩了,背上了最慢的锅。

别看这小小的赋值符(”=“),它可是这慢后面的“罪魁祸首”。在《VB/VBA的赋值符“=”,如何塑造新特性?又如何高效传递数据?》一文中,就详细介绍了赋值符与数据拷贝之间的关系,也即赋值就意味着数据拷贝,但函数返回值除外。

函数返回值除外,也是有条件的,返回的值必须是当前函数分配的。所以,这个结论的作用,也仅仅是告诉读者们,函数名是个特殊的变量而已。详情可参阅《VB/VBA,可能超乎你的想象》。

没想到吧,函数也是可以讲究多态性滴

函数返回局部变量,这是很通常的做法,主要目的是规避语法错误,比如递归调用。函数返回当前函数堆栈数据中,真正有用的,可能是按需返回参数值,或其他运算结果,让函数具有多态性。

什么?函数多态性?多态性不是面向对象的概念吗?没错,VB/VBA相对其他OOP语言而言,它是个半自动水平,差在没有一套完整的现成章法,但好也好在它没有太过封闭。它既可以使用上古的汇编,直面硬件,也可以使用C面向过程(只不过更进一步用鼠标键盘事件驱动),当然还可以面向对象。

而要使用OOP概念时,它甚至可以直接在面向过程中使用极轻量化的OOP理念。但这都不是本文要细说的,因为多态要没有性能保证,是爽不起来的。所以,本文就是从实现多态性能的角度,如何保证多态性能落地。而字符串,又是铁板一块,至少在VB/VBA这个领域里,尚未看见有人研究。

一、当函数返回用户ByRef的字符串,情况还会例外吗?

【声明】内容源于网络
0
0
BtOfficer
MyPlace安全生产框架,行业情报,办公自动化
内容 197
粉丝 0
BtOfficer MyPlace安全生产框架,行业情报,办公自动化
总阅读38
粉丝0
内容197