问题标签 [infix-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1373 浏览

haskell - 在 Haskell 中使用 3-arg 中缀运算符的真实示例?(如 $||。)

我在包中找到了一堆运算符$||parallel

但他们接受 3 个论点。我没有看到使用这些运算符的示例,所以我需要想出一个好的风格来编写它们。

他们通常的风格是:

?

0 投票
1 回答
100 浏览

python - python不是什么?一个特殊的函数类型?

在 R 中,!真的是一个中缀运算符 `!`,所以像这样的语句

是完全有效的。有没有办法访问不在 Python 中的一阶对象?我一直在谷歌搜索没有成功。

0 投票
1 回答
55 浏览

scala - 具有自动数字转换的中缀运算符

这个简化的(并且有些人为的)示例与我正在寻找的非常接近。

有了这个,我可以:

但我不得不怀疑:

  1. 每个结果都是一个 Double。我可以模仿标准库中的自动数字转换吗?

    /li>
  2. 有没有更好的办法?(总有更好的方法。)

0 投票
1 回答
351 浏览

haskell - 为什么 f <$> g <$> x 等价于 (f . g) <$> x 虽然 <$> 不是右结合的?

为什么f <$> g <$> x等于(f . g) <$> x虽然<$>不是右结合?

(这种等价在带有 plain的流行习语$中是有效的,但目前$是右结合的!)

<*>具有与 相同的关联性和优先级<$>,但行为不同!

例子:

根据 的定义<$>,我也希望show <$> show <$> Just 3失败。

0 投票
1 回答
105 浏览

rust - 重新定义中缀运算符的特征

我正在尝试重新定义Add特征,以便可以将其用作中缀运算符:

是否可以重新定义Add特征以使其使用+运算符来添加功能?

0 投票
2 回答
3551 浏览

scala - Scala - 定义自己的中缀运算符

采用单个参数的方法可以在 Scala 中编写为中缀运算符。即添加*(other:C) = foo(this, other)到类 C,将允许我们编写c1 * c2而不是 foo(c1,c2)。但是有没有办法在你不能修改的现有类上定义中缀运算符?

例如,如果我想写c1 + c2而不是xor(c1,c2), where c1,c2:Array[Byte],我显然不能修改 Array-Class。

我找到了这个并尝试了

但这似乎不起作用(c1 + c2)。

类型不匹配,预期:String,实际:Array[Byte]

我以为问题可能出在我的使用+上,所以我换了它,xorc1 xor c2只会导致

无法解析符号异或

有什么建议么?

更新

有趣的。我有一个class Fooobject Foo它下面定义的,包含隐式类。这导致了上述错误。

但是,删除对象并将隐式类放入 atrait BytearrayHandling然后扩展它 ( class Foo extends BytearrayHandling) 似乎可行。这是为什么?

0 投票
1 回答
158 浏览

c# - 数学表达式解析器中的右结合运算符

最后,来自这个问题,问题仍然存在,这个子解析器......

...没有正确处理指数运算符(“^”)。这是因为它是右结合的。上面的代码处理它就好像它是关联的。

例如:文本e^x^2被解释为(e^x)^2。但是,正确的“解释”应该是e^(x^2).

我已经尝试过这样的事情:

这只适用于两个连续的“^”-表达式。不是类似的东西e^x^y^z(这e^(x^(y^z))e^((x^y)^z)解析器声称的不同......我错过了什么?

0 投票
2 回答
1031 浏览

lisp - CLisp 错误:“(x) 不是数字”

这是我应该为 * 和 + 操作实现中缀评估的函数。

当我使用列表 '(3 + 4) 运行它时,它给了我一个错误,说“(4) 不是数字”。任何想法可能是什么问题?

0 投票
0 回答
399 浏览

swift - Swift:使用中缀运算符/顶级函数在 Release Build 中崩溃

我在 Swift 中创建了一个中缀运算符来比较两个 Optional、Equatable 值(我通常需要这样做):

很简单。

我有一个User使用这个中缀运算符的类型,作为它Equatable符合以下条件的一部分==

如您所见,我有一些可选参数需要使用中缀运算符相互比较。如果我使用配置构建debug,一切正常。但是,如果我使用配置进行构建release,我会遇到此崩溃(通过 Fabric/Crashlytics 报告):

EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x4000000000000000

堆栈跟踪很长,但相关的崩溃发生在这里:

line 24直接对应public func ==(lhs: User, rhs: User) -> Bool {。如果我删除中缀运算符==?,则不会发生崩溃。

如果我将中缀运算符替换为顶级函数public func ==(lhs: User, rhs: User) -> Bool {...}(与 完全相同的实现),仍然==?会发生崩溃。所以它并不特定于中缀运算符。

同样,这只发生在 Swift 1.2 下的发布版本上。我不能使用 Swift 2,因为它不是测试版,所以请不要将其作为答案提交。

更新

问题似乎与模块有关。中缀运算符和顶级函数在一个名为 的单独模块中定义Utilities,我将其导入到User.swift文件中。我尝试将isEqual函数移动到同一个文件中,并且不再发生崩溃。但我宁愿在正确的模块中使用该功能。

0 投票
1 回答
473 浏览

r - 定义在公式中使用的中缀运算符

我正在尝试创建解决方案的更简洁版本,这需要以d1 + d1:d2.

鉴于*在公式的上下文中是完整交互的简洁替代(即d1 * d2给出d1 + d2 + d1:d2),我的方法是尝试定义替代运算符,例如%+:%使用我在其他应用程序中习惯的中缀方法,a拉

然而,这可以预见地失败了,因为我没有仔细评估;让我们介绍一个例子来说明我的进步:

通过这个例子,希望可以清楚为什么简单地写出这两个术语可能是不可取的:

一种接近我想要的输出的解决方法是将整个公式定义为一个函数:

这给出了传递给 时的预期系数lm,但名称更难直接解释(特别是在我们注意给出描述性名称的真实数据中d1d2与这个通用示例相反):

所以这不是最优的。

有没有办法定义调整代码,以便我上面提到的中缀运算符按预期工作?如何改变形式plus.times以便不重命名变量?

我一直在四处寻找(?formula, ?"~", ?":", getAnywhere(formula.default),这个答案等),但还没有看到 R*在公式中遇到它时如何准确解释,以便我可以做出我想要的细微调整。