Я пытаюсь реализовать свойство ToEnumerable для внешнего типа, который его не реализует. Я не могу заставить код работать.Внедрение IEnumerable в Fsharp по внешнему типу
Итак, я отключил его до добавления нетипированного объекта GetEnumerator и добавил код для ToComparable для руководства. Однако я не знаю, как сохранить измененное состояние для счетчика.
Является ли pb анонимным классом?
Как вы это сделаете?
open System
open System.Collections
open System.Collections.Generic
type Bloomberglp.Blpapi.Element with
//**WORKS OK**
member this.ToComparable:IComparer<Bloomberglp.Blpapi.Element> = {
new IComparer<Bloomberglp.Blpapi.Element> with
member this.Compare(x, y) = x.NumValues.CompareTo(y.NumValues)
}
//**WORKS (sort of) OK without storing the state**
member this.GetEnumerator2:IEnumerator = {
//let mutable i =0
new IEnumerator with
member this2.Reset() =
i <- 0;
()
member this2.MoveNext() =
if i < n then
i <- i + 1
true
else
false
member this2.Current
with get() =
this.GetElement(0) :> obj
}
действительно. хорошо видно! Я только начинаю fsharp, так легко пропустить картину! – nicolas
один меньше состояния для отслеживания ...;) – nicolas