【发布时间】:2013-12-22 10:36:08
【问题描述】:
在数学课中,我们学习了如何定义新的运算符。例如:
(ℝ, ∘), x ∘ y = x + 2y
这定义了∘ 法律。对于任何实数 x 和 y,x ∘ y 是 x + 2y。
例如:2 ∘ 2 = 2 + 4 = 6.
可以在 JavaScript 中定义这样的运算符吗?我知道一个函数可以完成这项工作:
function foo (x, y) { return x + 2 * y; }
但我想要以下语法:
var y = 2 ∘ 2; // returns 6
而不是这个:
var y = foo(2, 2);
哪个是最接近这个问题的解决方案?
【问题讨论】:
-
这个的另一个名字是中缀函数表示法——答案是否定的,你不能
-
你可以尝试使用现有的操作符来利用
valueOf,但在 JavaScript 中就是这样。 -
我认为定义一个符号在我的键盘上没有的运算符是一个非常糟糕的主意
-
没有。你不能在 JavaScript 中做到这一点。但是,您可以在 Haskell 中执行此操作。第一行:
infixl 6 ∘。第二行:x ∘ y = x + 2 * y. -
从技术上讲,您可以通过编写您自己的词法解析器并在
<script>块中定义您自己的脚本类型名称。这种技术被广泛使用。一些著名的例子包括Google Traceur。
标签: javascript operators