Недавно я узнал об обобщенной нотации для обозначения типов полиморфных c в 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 заимствовал этот обобщенный синтаксис из объектно-ориентированных языков для поддержки явных полиморфных типов c.
ПРИМЕЧАНИЕ: Я действительно использовал application/dw
, чтобы увидеть символы функций при запуске предварительного просмотра из Anypoint Studio
TIA!