如何在不初始化的情况下声明迭代器? (科特林)

时间:2016-05-11 09:55:44

标签: kotlin listiterator

我有listIterator<String>名为iit

现在我知道如何声明它并给它一个值,但是如果我只想声明它并用什么来初始化它会怎么样。

怎么做?

修改 如何使用空list<string>初始化迭代器?

2 个答案:

答案 0 :(得分:3)

如果此变量属性,您可以使用lateinitDelegates.notNull()

private var lateinit iterator1: ListIterator<String>
private var iterator2: ListIterator<String> by Delegates.notNull()

但是,如果它是一个局部变量,你就不能保持它未初始化。您可以将其声明为val并稍后对其进行初始化,但必须在所有代码路径中进行初始化。

val iterator: ListIterator<String>
// Do something.
iterator = list.listIterator()

或者您可以将其设为可为空,使用null进行初始化,然后为其指定值。

var iterator: ListIterator<String>? = null
// Do something.
iterator = list.listIterator()

答案 1 :(得分:0)

正如答案所写,这就是你要求的。

val iit = listOf<String>().iterator()

但是,从我的角度来看,从一个你再也没有引用的空列表中创建一个迭代器是一种难闻的气味。

也许你应该考虑

val l = listOf<String>()
val iit = l.iterator()
相关问题