F#前向类型声明

35

我在使用F#时遇到了这个问题。假设我想声明两个相互引用的类型:


type firstType = 
     | T1 of secondType
     //................

type secondType =
     | T1 of firstType  
     //................    

我该如何做到这一点,以便编译器不会产生错误?


1
请参见https://dev59.com/4HRB5IYBdhLWcg3wQFLu。 - Brian
3个回答

55

你使用了 'and':

type firstType = 
     | T1 of secondType

and secondType =
     | T1 of firstType

4
每当我觉得在 F# 中有什么不够优雅的时候,我总是惊喜地发现有一个优雅的解决方案。 - CodeMonkey

4

我想通了,是这样的:


type firstType = 
     | T1 of secondType
     //................

and secondType =
     | T1 of firstType  
     //................   

6
如果你还不知道的话,互相递归的函数使用相同的符号表示法。 - Massif

2
限制在于类型必须在同一文件中声明。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接