【发布时间】:2016-10-16 18:34:29
【问题描述】:
我第一次解决这个问题是在 C 语言中
#define 2 5
assert(2+2 == 10);
很遗憾
error: macro name must be an identifier
我也试过Scheme
(define 2 5)
但是
can't define a non-symbol: (define 2 5)
我想知道是否有任何编程语言可以做到这一点。
【问题讨论】:
-
只是一个想法,但在 C++ 中可能会重载
+运算符,然后重新定义每个操作数在加法过程中的行为方式。 -
@TimBiegeleisen:这很困难,例如,
2 + 2是一个编译时可评估的常量表达式。我在标准 C++ 中看不到这样做的方法。 -
你为什么要问?想知道要避免哪些语言?
-
@TimBiegeleisen 这是个好主意。不幸的是,我认为您不能为 int 等内置类型重载运算符。我试图定义一个类,在其上重载
+、int运算符,然后将数字文字转换为该新类。这给出了看起来像(T)2 + (T)2 == 5的代码。这看起来很奇怪和可疑,但很酷,谢谢。 :)
标签: programming-languages flexibility