|
|
1
7
下面是如何使用两级类型进行修复:
这个例子是OCaml,但也许可以推广到F#。希望这有帮助。 |
|
|
2
10
在F#中,可以定义 相互递归类型 ,也就是说,您可以定义两个需要相互引用的类型,它们将看到彼此。写这个的语法是:
这种语法的限制是这两种类型都需要在一个文件中声明,因此不能在每个文件中使用典型的C#organization 1类型。
如果您首先为这两种类型定义接口,您可能会编写得更好—它们可能需要或不需要相互递归(取决于其中一种是否用于另一种的公共接口):
这有以下好处:
|
|
|
3
5
F#直接支持相互递归的类型。考虑以下鸡/蛋类型定义:
关键是相互递归的类型是使用“and”操作符一起声明的(与两个单独的类型相反) |
|
|
4
2
去掉DAOMisc.FindIdByType,在每个DAO类中用一个FindId替换它怎么样?芬迪只知道如何找到自己的类型。这将消除对基类和动态类型测试的需要,以及DAOMisc和所有其他DAO类之间的循环依赖。DAO类型可以相互依赖,因此CityDAO可以调用StateDAO.FindId(如果需要,DAO类型可以相互依赖。) 这就是你说的“简单的方法是把这个函数放到每个DAO中…”。。。但是,我觉得这是错的?我不确定,因为你说过这个函数只会引用它前面的类型。我在这里提出的想法是,每个FindId函数只知道自己的类型。 |
|
|
Thomas · 使类型别名在F中不可互换# 4 年前 |
|
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 8 年前 |
|
|
Soldalma · 我可以实例化包含顶级副作用值的类吗? 8 年前 |
|
|
matekus · F#-包含数字的字符串的自然排序 8 年前 |
|
|
matekus · F#类型匹配-无法创建映射或匹配记录 8 年前 |
|
|
Rob Lyndon · 未找到F#ProvidedTypes文件 8 年前 |
|
|
red-swan · 如何将intro ML.Net演示翻译为F#? 8 年前 |
|
|
jkone27 · F#-在编译时从字符串生成简单的空类型 8 年前 |