Lisp只用原子和表就构建了整个世界,其实表和数组是等价的(不完全)。JS的关联数组是红黑树,关联数组并不是C数组的超集,因为C数组可以当成一片连续内存使用。也许有用的不是数组,而是运算符[],C++只用重载[]就实现了数组。[]只是一个函数调用而已,一种函数调用的简写形式。这种简写或者说语法糖非常重要,因为它让代码的可读性更好。[]是一个运算符重载,即a[1]会变换为标准的函数调用operator[](a,1)。再看看其他的运算符,1+2变换为operator+(1,2)。两者的共性是变换,变换就是一种宏。我很早就意识到C++的模板其实是一种宏(这点在我的代码里也可以看出),也就是说宏是模板的超集。现在居然发现运算符重载也是一种宏!我一直以为模板和运算符重载才是C++的精髓,它们构建了整个C++世界。我错了,宏才是C++的根本。难道宏就是世界的终极原子?至少C++的if、for目前还不是宏,我试试能不能把它们变成宏。
时间: 2024-10-14 18:47:48