2016-05-11 3 views
0

У меня есть listIterator<String> под названием iit.Как объявить итератор без его инициализации? (Котлин)

Теперь я знаю, как объявить его и дать ему значение, но что, если я просто хочу объявить его и инициализировать его ничем.

Как это сделать?

EDIT: И как я могу инициализировать итератор с пустым list<string>?

+1

Может быть, вы могли бы описать проблему, которую вы пытаетесь решить более подробно? – miensol

ответ

3

Если эта переменная является собственностью, вы можете использовать либо lateinit, либо Delegates.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() 
+0

И как я могу инициализировать его пустым списком ? –

+0

Я не понимаю, что вы имеете в виду. – Michael

+0

'val iit = listOf () .iterator()' – voddan

0

Как написано как ответ, это то, о чем вы просите.

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

Но, с моей точки зрения, создать итератор из пустого списка вы не ссылаетесь когда-либо снова неприятный запах.

Может быть, вы должны рассмотреть

val l = listOf<String>() 
val iit = l.iterator() 
Смежные вопросы