Ich erstelle eine Immutable Linked List-Klasse in VBA. Es bietet ToArray
und ToCollection
Methoden, die ich beide als funktionierend verifiziert habe. Allerdings funktioniert die Get NewEnum() As IUnknown
Eigenschaft nicht und ich weiß nicht warum.Kann keine neue Enumeration in VBA erstellen
Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Set NewEnum = ToCollection.[_NewEnum]
End Property
Stepping durch den folgenden Code mit sequence
als SList
mit dem Debugger
Public Function Copy(ByVal sequence As Variant) As SList
Dim made As New SList
Dim element As Variant
For Each element In sequence
Set made = made.Cons(element)
Next
Set Copy = made.Reverse
End Function
zeigt die For Each element In sequence
Get NewEnum
Aufruf, der die Sammlung richtig baut und kehrt dann zu Copy
und verlässt die Schleife, nachdem keine Iterationen durchführt und keine Fehler. Meine einzige Vermutung ist, dass NewEnum
ist ein Iterator für eine Variable, die zerstört wird, wenn esverlässt. Ist das was passiert?
http://chat.stackexchange.com/transcript/message/18457890#18457890 – RubberDuck