关于记录类型,有什么方法可以处理F#中的多态性吗?
仅举一个例子,可以说我们有两种记录类型的地址,街道地址和邮箱地址。
我认为在行为方面可以通过模式匹配来处理它们。
但是关于引用,有什么方法可以从其他记录中引用(不意味着对象引用)这两种类型
最佳答案
如果我正确理解了您的问题,我将使用有区别的联合:
type StreetAddress = {. . . }
type BoxAddress = {. . .}
type Address =
| StreetAddress of StreetAddress
| BoxAddress of BoxAddress
然后您可以创建和引用
Address
值。如果街道地址和盒子地址共享一些公共数据,则可以将其放入单独的
BaseAddress
记录类型中,然后在StreetAddress
和BoxAddress
中使用,或直接由Address
使用:type BaseAddress = {. . . }
type StreetAddress = {. . . }
type BoxAddress = {. . .}
type Address =
| StreetAddress of BaseAddress*StreetAddress
| BoxAddress of BaseAddress*BoxAddress