- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近意识到在 DW 2.0 中使用类似泛型的表示法来表示多态类型。
下面的例子
%dw 2.0
output application/dw
fun id1(a) = a
fun id2(a: Any) = a
fun id3<T>(a: T) = a
var id4 = <T>(a: T) -> a
---
{
"d1": id1,
"d2": id2,
"d3": id3,
"d4": id4,
r1: id1(10),
r2: id2(10),
r3: id3(10),
r4: id4(10)
}
说明这些函数的签名和语义是相同的。
这引出了一个问题,如果有的话,这些定义之间有什么区别?你会推荐哪一个?
最后,确认我的假设,即 DW 2.0 借用了 OO 语言中的这种类似泛型的语法来支持显式多态类型。
注意:我确实使用了 application/dw
以便在从 Anypoint Studio 运行预览时查看函数的信号
TIA!
最佳答案
DataWeave 中参数多态性
最常见的用途之一是在类型系统函数中反射(reflect)它们的返回类型取决于其输入。
这有助于避免在实现相同且仅签名不同时必须为每种可能的输入类型创建专门的函数。
请注意,此功能仅在类型检查期间相关,此信息不会在运行时携带。
在你的例子中:
id1
将从 id1
函数的用法中推断出 a
的类型,并且还将推断返回类型,因为它们不是指定。id2
将推断返回类型为 Any
id3
和id4
是一样的,返回值和a
的类型取决于你调用函数的方式。<为了举例说明 Any
和 T
之间的区别,您可以尝试:
// var fails: String = id2("foo")
var ok: String = id3("foo")
由于 id2
的结果不能分配给 String
因为它是 Any
,但是 id3
返回一个 String
因为它被赋予一个 String
作为输入。
关于dataweave - DW 2.0 中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63234247/
有没有办法采用递归函数(如下所示)并使其成为尾递归?我有这样的输入: { "message": "Test ", "read": [ { "
有没有办法采用递归函数(如下所示)并使其成为尾递归?我有这样的输入: { "message": "Test ", "read": [ { "
我需要从两个数组开始生成一个对象,一个包含键名称,另一个包含值。我可以使用以下代码获取它: var keys = ["fieldA","fieldB","fieldC"] var values = [
我需要从两个数组开始生成一个对象,一个包含键名称,另一个包含值。我可以使用以下代码获取它: var keys = ["fieldA","fieldB","fieldC"] var values = [
这适用于上升。 vars.results orderBy (results) -> results.name 但不知道如何按名称降序排序 最佳答案 试试这个: (vars.results orderB
我有一个要求,我需要比较 2 个输入 json 对象 - obj1 和 obj2。两个输入可以有相同的键,也可以有额外的键。 如果两个输入中的键相同,则应从 obj2 中获取值。 如果 obj2 中的
我最近通过查阅此 doc page 了解了如何在 XML 中添加默认 namespace . %dw 2.0 output application/xml var dns = {uri: "http:
我正在尝试从 Dataweave 2.2 中的 multipart/form-data 中获取内容。我只想从有效载荷的第二部分发回 pdf。我没有运气使用 Dataweave 解析此有效负载。 我的数
我的属性文件中有一个使用 mule 安全属性的加密值例如: password = !#$#%%%f (encrypted) 我想根据请求中传递的输入参数,使用dataweave中的p函数动态获取这个
我正在尝试从 Dataweave 2.2 中的 multipart/form-data 中获取内容。我只想从有效载荷的第二部分发回 pdf。我没有运气使用 Dataweave 解析此有效负载。 我的数
我的 API 有一个字符串输入。它可以是 XML 或 JSON,我需要使用它的 Read 函数将其解析为 JSON。 MuleSoft 4 或 Dataweave 2 中确定字符串格式的最佳方法是什么
我的 API 有一个字符串输入。它可以是 XML 或 JSON,我需要使用它的 Read 函数将其解析为 JSON。 MuleSoft 4 或 Dataweave 2 中确定字符串格式的最佳方法是什么
场景:给定如下输入 sampleArray ,我想将所有有特定老师的学生分组。 在 DataWeave 中,我们有一个方法 groupBy 允许我们对指定字符串键的数组进行分组。但是这里因为 item
inputArray = ["cat", "bat", "mat"] configuredArray = ["dog", "elephant", "fox", "cat"] inputArray 和
使用以下输入: [5,5,4,4,4,2,2,1] 我想生成以下输出: [ { "points": 5, "rank": 1 }, { "points": 5,
我有一个普通的日期/时间字符串(本地欧洲夏令时/冬令时),我想将其转换为 UTC。 我收到的日期是这样的 {"message": "2021-05-01 15:39"} 但是像这样使用 LocalDa
我当前的有效负载是(从 POST 收到的) 我想获取编码值(即 ISO-8859-1 ) 要使用的正确 DataWeave 表达式是什么? 我已经测试过了 var infos = payload
我想在对象中添加一个求和字段。这是我所做的简单代码: %dw 2.0 output application/json fun compute(a) = a var demo= { a: com
我想在对象中添加一个求和字段。这是我所做的简单代码: %dw 2.0 output application/json fun compute(a) = a var demo= { a: com
我有以下 DW 2.0 函数用于修剪 JSON 有效负载中任何字符串值上的空格: fun whiteSpaceTrimmer(item) = item match { case is Arra
我是一名优秀的程序员,十分优秀!