Rog*_*son 3 .net polymorphism f# records multimethod
在记录类型方面,有没有办法处理F#中的多态?
举一个例子,假设我们有两种记录类型的地址,街道地址和方框地址.我认为,当涉及到行为时,可以在模式匹配中处理它们.但是引用怎么样,有没有办法从其他记录中引用(不是对象引用)两种类型
MiM*_*iMo 10
如果我理解你的问题,我会使用一个有区别的联盟:
type StreetAddress = {. . . }
type BoxAddress = {. . .}
type Address =
| StreetAddress of StreetAddress
| BoxAddress of BoxAddress
Run Code Online (Sandbox Code Playgroud)
然后你可以创建和引用Address
值.
如果街道和邮箱地址共享,你可以把它变成一个独立的一些常见的数据BaseAddress
记录类型,然后使用内部StreetAddress
和BoxAddress
,或直接使用Address
:
type BaseAddress = {. . . }
type StreetAddress = {. . . }
type BoxAddress = {. . .}
type Address =
| StreetAddress of BaseAddress*StreetAddress
| BoxAddress of BaseAddress*BoxAddress
Run Code Online (Sandbox Code Playgroud)