swift - Custom List data structure implementing SequenceType with using of GeneratorOf struct -


my attempts understand generators , sequences lead me idea of implementing own list data structure , implement protocols use forin loop. code:

class gslist<t> : sequencetype {     var next : gslist<t>?     var value : t      init(_ value: t, next : gslist<t>?)     {         self.value = value         self.next = next     }      func add(list: gslist<t>)     {        if (self.next != nil)        {             self.next?.add(list)        } else        {             self.next = list        }     }      typealias generator = generatorof<gslist<t>>      func generate() -> generator     {         var current: gslist<t>? = self         println(current?.value)          return generatorof             { () -> gslist<t>? in                  let returnvalue = current                 current = self.next                 println(self.value)                 println(current?.value)                 return returnvalue         }     } }   var list1 = gslist(1, next: nil) var list2 = gslist(2, next: nil) var list3 = gslist(3, next: nil) var list4 = gslist(4, next: nil) var list5 = gslist(5, next: nil)   list1.add(list2) list1.add(list3) list1.add(list4) list1.add(list5)  var generator = list1.generate()  generator.next() generator.next() generator.next() generator.next() generator.next() 

it doesn't have compile time errors problem current variable not updated next value in generate() method:

func generate() -> generator         {             var current: gslist<t>? = self             println(current?.value)              return generatorof                 { () -> gslist<t>? in                      let returnvalue = current                     current = self.next                     println(self.value)                     println(current?.value)                     return returnvalue             }         } 

so calling next generator.next() returns first item.

how can avoid this?

your line

current = self.next 

should be

current = current?.next 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -