我想知道是否有办法让类型成员相互引用。我想像这样编写以下程序:
type IDieRoller =
abstract RollDn : int -> int
abstract RollD6 : int
abstract RollD66 : int
type DieRoller() =
let randomizer = new Random()
interface IDieRoller with
member this.RollDn max = randomizer.Next(max)
member this.RollD6 = randomizer.Next(6)
member this.RollD66 = (RollD6 * 10) + RollD6
但是,this.RollD66 无法看到 this.RollD6。我可以理解为什么,但似乎大多数函数式语言都有一种让函数提前知道它们存在的方法,因此这种或类似的语法是可能的。
相反,我必须执行以下操作,这不是更多代码,但似乎前者看起来比后者更优雅,特别是如果有更多这样的情况。
type DieRoller() =
let randomizer = new Random()
let rollD6 = randomizer.Next(6)
interface IDieRoller with
member this.RollDn max = randomizer.Next(max)
member this.RollD6 = rollD6
member this.RollD66 = (rollD6 * 10) + rollD6
有小费吗?谢谢!