迭代器函数不适用于内部变量

时间:2019-03-03 07:01:48

标签: kotlin

我正在完成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

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

  

考虑lstTotal.Items.Add("SUB TOTAL = ")是一个currentDay对象,而MyDate返回一个next()

但是MyDate类上没有方法next()(错误消息试图说的是)。因此MyDate将不会编译。

currentDay.next()类上只有next()(但是您当然不想调用它,因为它会带来迭代器前进的副作用)。

您一定是想打电话给DateIterator的。