0
有沒有可能使用ppx擴展或類似方法將功能更新語法{ record with key = value }
與嵌套記錄一起使用的方法?具有嵌套記錄的OCaml功能更新
例如,在下面的示例程序中,我在功能上只更新最外層的記錄,當我真的想要定位一個「內層」記錄時。
type outer = {
a : float;
b : inner
}
and inner = {
c : float;
}
let item = { a = 0.4; b = { c = 0.7 } }
let() = ignore { item with b = { c = 0.8 }
如果inner
有多個字段,它變得不太方便。
我希望能夠寫類似以下(稻草人語法):
let() = ignore { item with b.c = 0.8 }
看起來,在某種意義上,答案是「否」。這聽起來像'{record with key = value}'中的'key'只能是單個字段,並且沒有任何常用的擴展名,允許'key'-位置中的更多類型的東西...並可能將其解析爲多個功能更新。 –
是的,直接OCaml的語法在'with'之後要求*字段*。這是一個單一的標識符,可能在包含模塊的名稱之前(其中定義了記錄類型)。 –