我知道你可以重载现有的运算符。我想知道是否可以创建一个新的运算符。这是我的场景。
我想要的是:
var x = (y < z) ? y : z;
等同于这个:
var x = y <? z;
换句话说,我想创建我自己的<?
操作符。
发布于 2009-06-24 18:33:46
不,这不可能。相反,您需要创建一个方法
发布于 2009-06-24 18:35:37
发布于 2009-06-24 18:47:54
正如其他答案所说,您不能创建新的运算符-至少,如果不更改编译器中内置的词法分析器和解析器。基本上,编译器被构建为识别单个字符(如<
或?
)或一对字符(如>>
或<=
)是运算符,并对其进行特殊处理;例如,它知道i<5
是一个表达式而不是变量名。将操作符识别为操作符是一个独立于决定操作符实际做什么的过程,并且与编译器紧密集成-这就是为什么您可以自定义后者而不是前者的原因。
对于具有开放源码编译器的语言(如GCC),理论上可以修改编译器以识别新运算符。但这并不是特别容易,而且每个人都需要你的自定义编译器来使用你的代码。
https://stackoverflow.com/questions/1040114
复制相似问题