问题标签 [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.
kotlin - Kotlin 高阶函数签名类型:匹配函数对象和类型擦除
看来我在这里遗漏了一些非常重要的东西。Kotlin 函数类型是用称为Function N的特定类实现的,并使用泛型来定义接收器、参数和返回类型。存储函数引用时,是否有可以保留函数签名的语法?或者任何其他方式来执行我在下面的代码中所做的事情?
那是因为这一切都很有趣和游戏,直到您希望将它们实际存储为类型Any ,比如在 a中,然后检索它们,匹配并将它们向下转换/分配给函数变量并使用它。问题是泛型会执行Type Erasure,因此如果您将函数存储到Any,您将无法将其取回并使用它,即将其 与实际类型匹配将是:
并且不可用,因为它仅将签名与参数匹配无类型,即你已经完成了。(您可以使用它的唯一情况是因为它没有参数或返回类型。)Map<String,Any>
Function2<Int,Int,Int>
Function2<*,*,*>
Function0
编译类型函数签名和运行时函数签名之间似乎存在脱节。
由于样板文件以及我必须使用类继承来键入函数签名这一事实,我设法通过以下我讨厌的代码克服了这个问题。我知道强制转换需要代码对存储的对象有额外的了解,并且可以被认为是一种反模式,但是如何存储函数以供以后动态调用呢?(可能有其他数据将匹配应用程序/服务器中的参数和类型,其他模块都将声明它们自己的函数。在下面的示例中,类仅声明一个绑定到签名类型的函数,在一个完整的示例中这些类将在构造函数中使用一个实际的 lambda,即每个实例Function2IntToInt
指向另一个函数,因此它有 2 个层次:签名和函数指针。
感谢您的善意见解和建议。
编辑:澄清和拼写
php - 必需参数 $xxx 跟在可选参数 $yyy 之后
自从升级到 PHP 8.0 后,在运行如下代码时会引发此错误:
这在过去的 PHP 版本中有效,没有问题。
php - 函数的可为空类型参数上未捕获的 ArgumentCountError
我正在使用 php 8.0,但由于某种原因,联合类型和可为空的类型似乎无法根据文档工作。?Type 或 Type|null 应该根据文档(https://www.php.net/manual/en/language.types.declarations.php#language.types.declarations.union)使参数成为可选
但我有一个例外。
简单的测试代码
这里有什么问题?
java - Apache Drill UDF:未找到函数签名的匹配项
嗨,我正在开发钻头用户定义的函数。我写了这个UDF。
但是当我运行这个查询时
Drill 返回一个错误信息。
请帮我找出问题所在。我在同一个包下编写了另一个 UDF,它工作得很好。因此,它不太可能是 UDF 注册表错误。
有没有一种方法可以探测 UDF 的函数签名?
scala - 如何替换通用匿名函数?
假设有腿动物有一个特征:
还有两种这样的有腿动物:
在农场里也有这些动物的持有人
还有一种通用方法,通过添加一条额外的腿来变异所有有腿的动物
问题是如何实现一个方法,Farm
以便将mutate: Legged => Legged
函数作为参数并将其应用于所有Legged
动物?
到目前为止我所带来的,但它实际上并没有工作
我知道如何通过模式匹配来做到这一点,但这会导致潜在的MatchError
.
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
没有它有什么方法可以做到这一点吗?
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. 中的版本是有意义的)