我想知道是否有办法实施下一个例子:
string tmp = "+";
int ans1 = 4 tmp 5;
tmp = "+";
int ans2 = 4 tmp 5;
由于
答案 0 :(得分:4)
至少可以这样做:
MyOpType tmp = "+";
int ans1 = 4 & tmp & 5;
tmp = "+"; // Could be any operator implemented by MyOpType
int ans2 = 4 & tmp & 5;
通过创建一个名为MyOpType
的类,该类具有从string
到其自身的隐式运算符重载。这也需要运算符重载&
来返回一些错过单个参数的运算符类型。
但是,我不建议这样做“黑客”,因为不清楚代码的作用。而且,我确信有更好的方法来做你应该做的事情。因此,如果您解释上下文,那么我们可能会找到更好的解决方案:)
我想像Result("+", 4, 5)
这样的东西会更清晰,更容易实现。这引出了一个问题:你从哪里获得运营商?用户?如果没有,肯定会找到更好的解决方案。如果你想要某种形式的“动态解释”,那么.Net Expressions trees可能很有趣。
答案 1 :(得分:0)
确切的语法 - 没有。使用其他一些语法(更接近C#) - 也许
答案 2 :(得分:0)
这个主题叫做“表达”,关于它有很多样本。最好的一个here
祝你好运