问题标签 [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.
javascript - 获取函数的数量
我是一名正在学习 Lua 的 JavaScript 开发人员。我遇到了在 Lua 语言中获取函数数量的问题。
在 JavaScript 中,这很简单:
怎么可能在 Lua 中轻松做到这一点?
c++11 - 确定 std::bind() 结果的数量和其他特征的标准方法?
几天来,我一直在绞尽脑汁,试图弄清楚如何让一个类有一个漂亮干净的公共接口来执行回调机制的注册。回调可以是 C++11 lambda、std::function<void(Type1,Type2)>
、std::function<void(Type2)>
、std::function<void()>
或std::bind()
.
这个接口的关键是该类的用户只需要知道一个公共接口,该接口几乎可以接受用户可能抛出的任何函子/回调机制。
显示仿函数和接口注册的简化类
使用 enable_if<> 复杂的唯一原因是打开/关闭某些方法。我们必须这样做,因为当我们想要将 std::bind() 的结果传递给 Register() 方法时,如果我们有这样的简单签名,它可能会模糊地匹配多个注册方法:
我没有重新发明轮子,而是引用了 traits.hpp,然后用我自己的名为“functor_traits”的 trait helper 包装了它,它增加了对 std::bind() 的支持
到目前为止,这就是我想出的识别有界函数“arity”的方法......或者绑定结果期望的参数数量:
我试图找到绑定结果arity
虽然这个实现在 gcc 中与 libstdc++ 一起工作,但我不太确定这是否是一个可移植的解决方案,因为它试图分解 std::bind() 的结果......我们真正应该的几乎私有的“_Bind”类不需要像 libstdc++ 的用户那样做。
所以我的问题是: 我们如何在不分解 std::bind() 的结果的情况下确定绑定结果的数量? 以及 我们如何实现尽可能支持有界参数的 function_traits 的完整实现?
c++ - 如何根据其数量(或编译时已知的其他信息)以不同方式调用函数对象?
在函数模板中,我想以不同的方式调用函数或函数对象,具体取决于它的数量(它需要多少个参数)。在伪代码中:
这如何在 C++ 中完成?
编辑澄清困难:f(x, y, z)
如果f
只需要 2 个参数,则不会编译,反之亦然,需要 3 个参数f(x, y)
时不会编译。f
macros - 递归宏arityexception
我正在尝试编写一个与线程宏功能相似(我认为)的宏,但是这将允许我指定一个关键字,其中前一个表单的插入将发生。我计划使用 clojure.walk/prewalk-replace,但我得到了 clojure.lang.ArityException。这是代码:
但是当我尝试应用单元测试时:
它产生:
我究竟做错了什么?
clojure - Clojure 中的多参数定义——第一场比赛先发球?
具体来说,在以下情况下应该发生什么:
即,我可以依靠 clojure 始终返回 0 而不是除以零吗?
scala - 列表上的Scala抽象值成员返回意外结果?
我不确定这是一个错误还是我对 Scala 的理解不够好。我今天在 REPL 中玩了一些列表功能。这是我所做的:
首先,我创建了一个列表:
接下来,我通过添加另一个双精度来创建另一个列表:
现在,当我在 newMyList 上询问 productArity (List.productArity) 时:
它似乎仍然将第一个列表与另一个列表区别对待。这是预期的行为还是错误?
注意,当尝试访问高于 0、1 的元素时,我得到一个 java.lang.IndexOutOfBoundsException。2 应该返回 2.0,3 应该返回 3.0,对吗?
function - Elixir:具有不同数量的函数重载
有什么方法可以定义具有不同数量的重载函数,例如在 C# 中我可以这样做:
或者
在 Elixir 中,这样做的唯一方法是将它们放在单独的模块中,这很快就会变得混乱。有什么办法吗?
编辑:我做了一个错误的假设。我看到的重载函数的例子碰巧有相同的数量,所以我(错误地)假设这是一个要求。函数由它们的名称和数量唯一标识,因此您实际上可以重载具有不同数量的函数。
scala - Scala:将元组解包为参数列表的一部分
我正在尝试发送方法调用元组的结果,作为另一个方法的参数列表的一部分。
目标方法
从方法返回,部分参数列表
换句话说,我正在尝试调用printResult(String, (Int, Long, Long))
. 如果方法返回签名与方法调用匹配,那么我可以使用
这会导致语法错误
解决方法
我正在求助于手动解包元组,然后在调用方法时使用它
有没有更优雅的方式来解包和发送元组作为参数列表的一部分?
参考
java - Arity.jar 中的 SyntaxException
我正在使用 Arity 算术引擎进行计算。所以我想知道我使用时可能出现的所有异常
double res = Symbols.eval("string");
我将它封装在一个 try 块中
所以我想知道所有的异常是怎么产生的,这样我就可以知道我哪里可能出错了。
clojure - ArityException:传递的 args (2) 数量错误
SO上有一些相关的问题,但我似乎无法弄清楚。我有一个非常简单的测试代码:
这导致:
这很奇怪,因为 tail-file 有两个参数([path handler-func])。