generics - F# - 了解使用泛型的类型
问题描述
我将在 10 天内进行 F# 考试,并且由于我目前正在做旧的考试集,因此在理解泛型,尤其是具有两个多态参数的类型时遇到了问题。
这些问题应该很容易解决,但我不确定它在语法上是如何工作的。旧试题如下:
以下类型Sum<'a,'b>
包含两种不同的值
type Sum<'a,'b> =
| Left of 'a
| Right of 'b
现在我需要编写两个类型的值Sum<int list, bool option>
,一个应该使用定义,另一个应该Left
定义Right
。
如果您将let sum1 = Left "Hello World
其定义为val sum1 : Sum<string,'a>
,但我找不到创建方法Sum<int list, bool option>
。
你会怎么解决?
解决方案
如果你要写
let sum1 = Sum<string,int>.Left "Hello World"
你会得到一个Sum<string,int>
所以如果你需要一个Sum<int list, bool option>
然后.....
(公平地说,在现实生活中,拥有 aSum<string,'a>
并不是真正的问题,因为 'a 可以变成任何东西,如果它需要是 abool option
或其他什么,类型推断通常会为你做艰苦的工作并限制 'a)。
推荐阅读
- java - Jmeter 2.11:让对等体未经过身份验证
- javascript - 如何使用样式组件将道具传递给 .mapped 元素?
- javascript - 如何使用 influxdb 和 Grafana 通过 docker 运行 K6
- sql - 将数据库排序规则读入 SQL Server 中的变量时出现问题
- vb.net - List 和 CheckedListBox 中的项目顺序问题
- java - Java 串行通信 -> EventListener 的问题
- r - dplyr transmute 的存在函数无法按预期工作
- perl - 在 Perl 中解析时从文件数据中获取最新记录(详细信息)
- regex - 使用正则表达式获取以 1 或 2 位数字、点和空格开头的多个匹配项
- ssl - 如何引用名称中带有哈希后缀的证书管理器生成的机密?