问题标签 [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.
clojure - 传递给的 args (2) 数量错误:core/first
我是 Clojure 的新手,我在迭代数据时遇到了一些问题。
我写的代码如下:
当我调用函数时:
我在 (if (firstmonthlyTargets) 语句中得到错误数量的 args 错误。
例外是:
ArityException 错误数量的 args (2) 传递给:core/first clojure.lang.AFn.throwArity
有人可以指出这里有什么问题吗?
非常感谢。
clojure - Clojure:是否有任何理由详细说明函数定义中的参数?
我目前正在编写数量未定义的函数,因此我在 clojure.core 等中寻找示例。
这是例如comp
(clojure.core)的定义
如您所见,对于 arities [fg],代码详细说明了 2 和 3 个参数 (xy ; x, y, z) 的值,即使它可以直接跳转到 [x & args]。
有什么性能原因吗?或者它是一个约定?我想调用apply
可能会影响性能,我不知道。
我们在现实生活中通常最多使用3D函数和2个函数的组合,也许是因为这个。
谢谢
functional-programming - 函数式语言中同名但参数不同的函数
我在Elixir的示例中看到了这段代码:
我在这里看到用不同的参数定义了两次相同的函数,我想了解这种技术。
我可以将它们视为重载函数吗?
它是具有不同行为的单个函数还是这两个不同的函数,例如print_only_once
和print_multiple_times
?
这些功能是否相互关联?
function - 按名称和数量调用函数
我正在尝试编写一个调用具有指定名称和数量的函数的函数:
所以这样称呼它:
应该会调用 function foo/3
。
问题是,如果只指定了函数的名称和数量,我不知道如何调用函数。我试图调用的函数保证存在于我试图调用它的同一个模块中。
是否可以在 Erlang 中实现这一点,以及如何实现?
javascript - `eval` 是在 JavaScript 中创建具有动态确定数量的函数的唯一方法吗?
我正在使用 JavaScript 间谍库 simple-spy。
我发现当监视给定函数时,生成的间谍总是有一个 0。
这给我使用 这个柯里化函数带来了问题。
所以我提交了一个拉取请求,为 spy library 添加了 arity 透明度。
代码如下所示:
这似乎有效。
是否可以在不使用的情况下做到这一点eval
?
是否有可能将使用减少eval
到更少?
我知道这个间谍实现还有其他问题。它很简单,到目前为止它适用于我的用例。
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:
Can anyone confirm what the notation <function>/<number>
means? Are other variants used?
clojure - 递归宏中的负数异常
我正在尝试一个编码挑战,要求您创建无限编译的代码。
我的第一个想法是一个永远扩展到自身的宏。我写了:
这实际上并没有产生任何东西,但我希望它永远循环。然而,相反,我得到了一个荒谬的arity异常:
如果我尝试给它一个踢的参数,它现在会抱怨宏不期望任何参数。
如果我让它实际上产生对自身的调用:
它因 StackOverflow 而失败,这是我预期的。
这里发生了什么?为什么它认为我正在传递宏“-2”参数?我能想到的唯一可能的事情是它与&
传递给宏的 2 个隐式参数有关,但这只是在黑暗中的一个镜头,并没有真正解释发生了什么。
为了解决这个问题,这似乎不是多元宏的问题,因为它只有一个 0 元版本。此外,显式传递隐式参数不会做任何事情:
这产生:
clojure - Clojure 协议 - 仅在 2-arity 版本的 multi-arity 函数上调度
精简版
我想要一个多元函数来调度 2 元版本的类型,但我希望 1 元版本在所有类型中都相同。
长版(带示例)
我有一个看起来像这样的协议
如果我想要“TypeA”来扩展这个协议,那么我有以下
对于某些特定于 TypeA 的函数 TypeA-fn。
如果我想要“TypeB”来扩展这个协议,那么我有以下
对于某些特定于 TypeB 的函数 TypeB-fn。
我试图创造的效果是柯里化。
是双重的,比如说,虽然
返回一个将 TypeA 映射到 double 的函数。
关键是 bar 的单参数实现总是相同的,而多参数实现取决于类型。自然,我不想每次为单参数版本扩展此协议时都重复自己,那么执行此操作的惯用 clojure 方法是什么。我考虑过不指定一个单一的 arity 版本,并在任何地方使用 (partial bar TypeX),但我厌倦了部分。
建议的解决方案 我可以将原始函数包装在一个新函数中,例如
但是为了一个目的而引入两个功能似乎不优雅。
clojure - 使用 dissoc 的一元版本?
在使用dissoc
时,我注意到它有一个似乎没有做任何事情的一元版本。我检查了源代码,结果发现它只是身份函数:
然后我注意到它disj
也有一个具有相同定义的一元版本。
一元版本的目的是什么?我能看到的唯一潜在用途可能是它们与 一起使用时apply
,但我不知道这会有什么用。为什么他们conj
和assoc
同行没有类似的一元版本?