问题标签 [arity]

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 回答
1457 浏览

clojure - 传递给的 args (2) 数量错误:core/first

我是 Clojure 的新手,我在迭代数据时遇到了一些问题。

我写的代码如下:

当我调用函数时:

我在 (if (firstmonthlyTargets) 语句中得到错误数量的 args 错误。

例外是:

ArityException 错误数量的 args (2) 传递给:core/first clojure.lang.AFn.throwArity

有人可以指出这里有什么问题吗?

非常感谢。

0 投票
1 回答
85 浏览

clojure - Clojure:是否有任何理由详细说明函数定义中的参数?

我目前正在编写数量未定义的函数,因此我在 clojure.core 等中寻找示例。

这是例如comp(clojure.core)的定义

如您所见,对于 arities [fg],代码详细说明了 2 和 3 个参数 (xy ; x, y, z) 的值,即使它可以直接跳转到 [x & args]。

有什么性能原因吗?或者它是一个约定?我想调用apply可能会影响性能,我不知道。

我们在现实生活中通常最多使用3D函数和2个函数的组合,也许是因为这个。

谢谢

0 投票
2 回答
1170 浏览

functional-programming - 函数式语言中同名但参数不同的函数

我在Elixir的示例中看到了这段代码:

我在这里看到用不同的参数定义了两次相同的函数,我想了解这种技术。

我可以将它们视为重载函数吗?

它是具有不同行为的单个函数还是这两个不同的函数,例如print_only_onceprint_multiple_times

这些功能是否相互关联?

0 投票
2 回答
189 浏览

function - 按名称和数量调用函数

我正在尝试编写一个调用具有指定名称和数量的函数的函数:

所以这样称呼它:

应该会调用 function foo/3

问题是,如果只指定了函数的名称和数量,我不知道如何调用函数。我试图调用的函数保证存在于我试图调用它的同一个模块中。

是否可以在 Erlang 中实现这一点,以及如何实现?

0 投票
1 回答
124 浏览

javascript - `eval` 是在 JavaScript 中创建具有动态确定数量的函数的唯一方法吗?

我正在使用 JavaScript 间谍库 simple-spy

我发现当监视给定函数时,生成的间谍总是有一个 0。

这给我使用 这个柯里化函数带来了问题。

所以我提交了一个拉取请求,为 spy library 添加了 arity 透明度

代码如下所示:

这似乎有效。

是否可以在不使用的情况下做到这一点eval

是否有可能将使用减少eval 到更少?

我知道这个间谍实现还有其他问题。它很简单,到目前为止它适用于我的用例。

0 投票
4 回答
1214 浏览

mysql - 具有可变参数的 Ecto 查询和自定义 MySQL 函数

我想执行如下查询:

FIELD是 MySQL 特定的函数,并且'B', 'A', 'D', 'E', 'C'是来自 List 的值。

我尝试使用fragment,但它似乎不允许仅在运行时知道动态参数。

除了完全原始 using 之外Ecto.Adapters.SQL.query,有没有办法使用 Ecto 的查询 DSL 来处理这个问题?

编辑:这是第一种天真的方法,当然不起作用:

0 投票
1 回答
233 浏览

jq - What does the jq notation / mean?

In various web pages, I see references to jq functions with a slash and a number following them. For example:

#xA;

I found the above notation used on a stackoverflow page.

I could not find in the jq Manual page a definition as to what this notation means. I'm guessing it might indicate that the walk function that takes 1 argument. If so, I wonder why a more meaningful notation isn't used such as is used with signatures in C++, Java, and other languages:

#xA;

Can anyone confirm what the notation <function>/<number> means? Are other variants used?

0 投票
2 回答
124 浏览

clojure - 递归宏中的负数异常

我正在尝试一个编码挑战,要求您创建无限编译的代码。

我的第一个想法是一个永远扩展到自身的宏。我写了:

这实际上并没有产生任何东西,但我希望它永远循环。然而,相反,我得到了一个荒谬的arity异常:

如果我尝试给它一个踢的参数,它现在会抱怨宏不期望任何参数。

如果我让它实际上产生对自身的调用:

它因 StackOverflow 而失败,这是我预期的。

这里发生了什么?为什么它认为我正在传递宏“-2”参数?我能想到的唯一可能的事情是它与&传递给宏的 2 个隐式参数有关,但这只是在黑暗中的一个镜头,并没有真正解释发生了什么。

为了解决这个问题,这似乎不是多元宏的问题,因为它只有一个 0 元版本。此外,显式传递隐式参数不会做任何事情:

这产生:

0 投票
1 回答
876 浏览

clojure - Clojure 协议 - 仅在 2-arity 版本的 multi-arity 函数上调度

精简版

我想要一个多元函数来调度 2 元版本的类型,但我希望 1 元版本在所有类型中都相同。

长版(带示例)

我有一个看起来像这样的协议

如果我想要“TypeA”来扩展这个协议,那么我有以下

对于某些特定于 TypeA 的函数 TypeA-fn。

如果我想要“TypeB”来扩展这个协议,那么我有以下

对于某些特定于 TypeB 的函数 TypeB-fn。

我试图创造的效果是柯里化。

是双重的,比如说,虽然

返回一个将 TypeA 映射到 double 的函数。

关键是 bar 的单参数实现总是相同的,而多参数实现取决于类型。自然,我不想每次为单参数版本扩展此协议时都重复自己,那么执行此操作的惯用 clojure 方法是什么。我考虑过不指定一个单一的 arity 版本,并在任何地方使用 (partial bar TypeX),但我厌倦了部分。

建议的解决方案 我可以将原始函数包装在一个新函数中,例如

但是为了一个目的而引入两个功能似乎不优雅。

0 投票
1 回答
80 浏览

clojure - 使用 dissoc 的一元版本?

在使用dissoc时,我注意到它有一个似乎没有做任何事情的一元版本。我检查了源代码,结果发现它只是身份函数:

然后我注意到它disj也有一个具有相同定义的一元版本。

一元版本的目的是什么?我能看到的唯一潜在用途可能是它们与 一起使用时apply,但我不知道这会有什么用。为什么他们conjassoc同行没有类似的一元版本?