问题标签 [function-signature]

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

kotlin - Kotlin 高阶函数签名类型:匹配函数对象和类型擦除

看来我在这里遗漏了一些非常重要的东西。Kotlin 函数类型是用称为Function N的特定类实现的,并使用泛型来定义接收器、参数和返回类型。存储函数引用时,是否有可以保留函数签名的语法?或者任何其他方式来执行我在下面的代码中所做的事情?

那是因为这一切都很有趣和游戏,直到您希望将它们实际存储为类型Any ,比如在 a中,然后检索它们,匹配并将它们向下转换/分配给函数变量并使用它。问题是泛型会执行Type Erasure,因此如果您将函数存储到Any,您将无法将其取回并使用它,即将其 与实际类型匹配将是: 并且不可用,因为它仅将签名与参数匹配无类型,即你已经完成了。(您可以使用它的唯一情况是因为它没有参数或返回类型。)Map<String,Any>Function2<Int,Int,Int>Function2<*,*,*>Function0

编译类型函数签名和运行时函数签名之间似乎存在脱节。

由于样板文件以及我必须使用类继承来键入函数签名这一事实,我设法通过以下我讨厌的代码克服了这个问题。我知道强制转换需要代码对存储的对象有额外的了解,并且可以被认为是一种反模式,但是如何存储函数以供以后动态调用呢?(可能有其他数据将匹配应用程序/服务器中的参数和类型,其他模块都将声明它们自己的函数。在下面的示例中,类仅声明一个绑定到签名类型的函数,在一个完整的示例中这些类将在构造函数中使用一个实际的 lambda,即每个实例Function2IntToInt指向另一个函数,因此它有 2 个层次:签名和函数指针。

感谢您的善意见解和建议。

编辑:澄清和拼写

0 投票
1 回答
463 浏览

python - 当我装饰 python 函数时,VS Code 在悬停时显示包装器的帮助,而不是函数的

VS is code 现在是最流行的代码编辑器,我喜欢它。

当您将鼠标悬停在函数上时,它会显示函数签名和帮助文档字符串。

当您装饰一个函数时,它的帮助文档字符串会更改为包装器的帮助文档字符串。(要理解我的意思阅读此↗️

在 python 3.4+ 中,这是通过使用 functools.wrap 修复的,如下所示(请阅读⬅️以更好地理解我的问题。)我没有写,因为它在那里得到了很好的解释。

但是当我将鼠标悬停在 VS Code 中的函数上时,它会显示包装器的文档字符串。

如何让 VS 代码显示原始函数的文档字符串?

0 投票
3 回答
29779 浏览

php - 必需参数 $xxx 跟在可选参数 $yyy 之后

自从升级到 PHP 8.0 后,在运行如下代码时会引发此错误:

这在过去的 PHP 版本中有效,没有问题。

0 投票
1 回答
191 浏览

php - 函数的可为空类型参数上未捕获的 ArgumentCountError

我正在使用 php 8.0,但由于某种原因,联合类型和可为空的类型似乎无法根据文档工作。?Type 或 Type|null 应该根据文档(https://www.php.net/manual/en/language.types.declarations.php#language.types.declarations.union)使参数成为可选

但我有一个例外。

简单的测试代码

这里有什么问题?

0 投票
2 回答
117 浏览

typescript - 打字稿函数输出不能分配给条件类型

我有一个更复杂问题的简化版本。以下导致 TSC 抛出错误:

引发以下错误:

out底部的检查类型正确,所以只是函数定义有问题。我怎样才能更好地理解这一点以及如何解决它?

游乐场链接

0 投票
1 回答
435 浏览

java - Apache Drill UDF:未找到函数签名的匹配项

嗨,我正在开发钻头用户定义的函数。我写了这个UDF。

但是当我运行这个查询时

Drill 返回一个错误信息。

请帮我找出问题所在。我在同一个包下编写了另一个 UDF,它工作得很好。因此,它不太可能是 UDF 注册表错误。

有没有一种方法可以探测 UDF 的函数签名?

0 投票
4 回答
100 浏览

scala - 如何替换通用匿名函数?

假设有腿动物有一个特征:

还有两种这样的有腿动物:

在农场里也有这些动物的持有人

还有一种通用方法,通过添加一条额外的腿来变异所有有腿的动物

问题是如何实现一个方法,Farm以便将mutate: Legged => Legged函数作为参数并将其应用于所有Legged动物?

到目前为止我所带来的,但它实际上并没有工作

我知道如何通过模式匹配来做到这一点,但这会导致潜在的MatchError.

0 投票
2 回答
104 浏览

haskell - 将 IO (Maybe (IO (Maybe a))) 减少到 IO (Maybe a)

我有一个函数可以读取带有 HsOpenSslreadPrivateKey函数的 Rsa 密钥,不幸的是我的函数的签名是 this String -> IO (Maybe (IO Maybe RsaKey))。我需要 PEM 格式和 Cryptonite.RSA 密钥,我编写了函数mkRsaKey来从 PEM 格式的字符串中生成它。

继承人的代码:

现在你可以看到类型签名在我的意义上不是我想要的最佳选择IO (Maybe RsaKey)。我怎样才能做到这一点?

编辑:

我实际上设法做到了,但我正在使用unsafePerformIO

据我所知,你永远不应该使用unsafePerformIO没有它有什么方法可以做到这一点吗?

0 投票
1 回答
45 浏览

c++ - 与 C++11 函数签名不一致

我对函数有疑问,更具体的是函数签名以及如何传递它们。我可能是一个微不足道甚至愚蠢的问题,但我还找不到令人满意的答案。

请考虑这个使用 astd::unique_ptr来管理文件指针的示例:

这种智能指针需要一个函数签名作为第二个模板参数(shared_ptr不是出于某种奇怪的原因)。我目前对这里解释签名的理解是

void ( ) (FILE ) 是一个指向不返回任何内容的函数的指针 (void) 和一个文件指针作为参数。

结果,用户必须使用地址运算符传递所需函数的地址。此时,出现了几个问题:

1.) 删除地址运算符同样有效,不会引发编译器警告,代码有效。这不应该是一个错误/警告吗?

2.)如果我使用对函数的引用(例如unique_ptr<FILE, void(&)(FILE*)>(f, func1)),它会按预期工作,那么这是传递函数的一种更好的方式,因为它是明确的吗?

3.) 完全删除中间说明符(例如unique_ptr<FILE, void()(FILE*)>(f, func1))会导致编译器错误,那么按值传递函数通常是不可能的吗?(如果是,那么通过将函数隐式转换为函数指针来重载 1. 中的版本是有意义的)