在XSLT中自定义XPath运算符:能否将array:append转为+运算符?
自定义运算符实现数组追加的可行性分析
结论先行:绝大多数编程语言里,你没法把array:append($foo,$bar)改成用+运算符$foo + $bar实现,原因如下:
- 运算符的行为是语言原生定义的,
+这类基础运算符的语义(比如数值相加、数组键合并)是硬编码在语言解析器里的,几乎没有原生支持自定义重载的空间,尤其是脚本类语言(比如Lua、PHP、Erlang这类常见的array:append使用场景)。 - 就算少数语言(比如C++、Python)支持运算符重载,也有严格限制,而且强行把
+改成数组追加会严重违反代码可读性——所有开发者看到+的第一反应都是数值运算或键合并,没人会联想到数组追加,反而会增加理解成本。
替代方案
如果嫌原函数名太长,更务实的做法是:
- 封装一个简短的函数别名,比如:
之后用-- 以Lua为例 local app = function(a, b) return array:append(a, b) endapp($foo, $bar)调用,比原函数简洁很多。 - 如果你用的语言有原生语法糖(比如Elixir的
++、JavaScript的[...$foo, ...$bar]),直接用原生语法即可,没必要硬改运算符。
内容的提问来源于stack exchange,提问作者MrD at KookerellaLtd
相关产品推荐
相关产品推荐

