Kotlin 迭代器函数不处理内部变量
我正在完成Kotlin Koans的练习,我想知道为什么:Kotlin 迭代器函数不处理内部变量,kotlin,Kotlin,我正在完成Kotlin Koans的练习,我想知道为什么: class DateRange(val start: MyDate, val end: MyDate) : Iterable<MyDate> { override fun iterator(): Iterator<MyDate> = DateIterator(this) } class DateIterator(val daterange: DateRange) : Iterator<MyDate
class DateRange(val start: MyDate, val end: MyDate) : Iterable<MyDate> {
override fun iterator(): Iterator<MyDate> = DateIterator(this)
}
class DateIterator(val daterange: DateRange) : Iterator<MyDate> {
var currentDay: MyDate = daterange.start
override fun hasNext(): Boolean = currentDay.next() <= daterange.end
override fun next(): MyDate {
val result = currentDay
currentDay = currentDay.nextDay()
return result
}
}
class日期范围(val开始:MyDate,val结束:MyDate):可编辑{
重写有趣的迭代器():迭代器=日期迭代器(this)
}
类DateIterator(val daterange:daterange):迭代器{
var currentDay:MyDate=daterange.start
重写fun hasNext():Boolean=currentDay.next()
考虑到currentDay
是一个MyDate
对象,而next()
返回一个MyDate
但是在MyDate
类上没有方法next()
(这就是错误消息试图说的)。因此currentDay.next()
将不会编译
在DateIterator
类上只有next()
(当然,您不想调用它,因为它会产生推进迭代器的副作用)
您一定想调用currentDay.nextDay()
。您是否在MyDate
类中定义了next()
方法?