如何为嵌套递归数据定义数据类型
How to defined data type for nested recursive data
我从js端得到了一个数据,看起来是这样的
{
"selectionSet": {
"type": 1,
"selections": [
{
"name": {
"kind": "Name",
"value": "viewer"
},
"selectionSet": {
"type": 1,
"selections": [
{
"name": {
"kind": "Name",
"value": "avatarUrl"
},
"selectionSet": null
}
]
}
}
]
}
}
我想知道如何为 selectionSet
和 selections
.
定义类型
好像在定义selections
的时候应该定义selectionSet
因为它有一个字段类型是selectionSet
。但是在定义selectionSet
的时候,我应该定义selections
有人可以用 OCaml 风格回答吗?我想把这个JSON样式的数据转换成一条记录。
要为此定义相互递归类型或函数,您可以使用关键字 and
。在您的情况下,您的记录看起来像这样:
type selectionSet = {
t : t;
selections : selections list;
}
and selections = {
name : name;
selectionSet : selectionSet option;
}
我从js端得到了一个数据,看起来是这样的
{
"selectionSet": {
"type": 1,
"selections": [
{
"name": {
"kind": "Name",
"value": "viewer"
},
"selectionSet": {
"type": 1,
"selections": [
{
"name": {
"kind": "Name",
"value": "avatarUrl"
},
"selectionSet": null
}
]
}
}
]
}
}
我想知道如何为 selectionSet
和 selections
.
好像在定义selections
的时候应该定义selectionSet
因为它有一个字段类型是selectionSet
。但是在定义selectionSet
的时候,我应该定义selections
有人可以用 OCaml 风格回答吗?我想把这个JSON样式的数据转换成一条记录。
要为此定义相互递归类型或函数,您可以使用关键字 and
。在您的情况下,您的记录看起来像这样:
type selectionSet = {
t : t;
selections : selections list;
}
and selections = {
name : name;
selectionSet : selectionSet option;
}