我正在完成Kotlin Koans的For loop练习,想知道为什么:
<link href="https://fonts.googleapis.com/css?family=Montserrat:900" rel="stylesheet">
<div class='title'>black</div>
我收到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
}
}
上的Unresolved reference: next
。
我知道这个问题的答案是没有currentDay()
的完全相同的代码,但是我想知道为什么它不起作用-考虑到next()
是currentDay
对象和{ {1}}返回一个MyDate
。
知道为什么吗?
答案 0 :(得分:1)
考虑
lstTotal.Items.Add("SUB TOTAL = ")
是一个currentDay
对象,而MyDate
返回一个next()
但是MyDate
类上没有方法next()
(错误消息试图说的是)。因此MyDate
将不会编译。
currentDay.next()
类上只有next()
(但是您当然不想调用它,因为它会带来迭代器前进的副作用)。
您一定是想打电话给DateIterator
的。