我正在尝试在F#中创建一个递归映射.
type RecMap = Map<string, RecMap>
因为循环引用而无法工作RecMap.但为什么不这样呢
type RecMap = Map<string, RecMap ref>
也不
type RecMap = (Map<string, RecMap>) ref
作品?我认为将地图的值类型设为a RecMap ref应该已经完成了.
通过重写RecMap为一个成员记录类型来解决问题,
type RecMap = { r : Map<string, RecMap> }
记录就像引用类型一样ref,但是为什么不在引用的情况下引用递归定义?
您的初始尝试是类型缩写,而您的上次尝试是定义新类型.在编译期间,缩写通过替换被删除.由于你有一个循环定义(即使它通过包含的附加级别ref),替换永远不会终止.
我可能会这样做:
type RecMap = RecMap of Map<string, RecMap>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |