Как правильно обработать цикл с пустым блоком?

Есть ли способ более элегантно написать блок DIR_INSIDE_LINE, чтобы функция startReadTag(child, ld) выполнялась до тех пор, пока не вернет false? 

when (dir) {
				DIR_INSIDE_BACK -> {
					return startReadTag(child, depth + 1)
				}
				
				DIR_INSIDE_LINE -> {
					val ld = depth + 1
					
					// Нужно написать более элегантный способ выполнения функции startReadTag(child, ld) до тех пор, пока она не вернет false 
					
					continue
				}
				
				DIR_BACK -> {
					return false
				}

				DIR_LINE -> {
					continue
				}
}
  • 21 октября 2023 г. 12:58
Ответы на вопрос 2
Если вам нужно продолжать выполнение функции `startReadTag(child, ld)` до тех пор, пока она не вернет `false`, вы можете использовать цикл `while` вместо оператора `continue`. Вместо пустого блока `DIR_INSIDE_LINE` вы можете написать следующее:

```kotlin
DIR_INSIDE_LINE -> {
    val ld = depth + 1

    while (startReadTag(child, ld)) {
        // Можно добавить другую логику, если необходимо
    }

    // Дополнительный код, который нужно выполнить после завершения цикла
}
```

Теперь функция `startReadTag(child, ld)` будет вызываться в цикле до тех пор, пока не вернет `false`. Вы можете добавить другую логику внутри цикла, если это необходимо. После завершения цикла будет выполняться любой дополнительный код, который вам может понадобиться.
DIR_INSIDE_LINE -> { val ld = depth + 1; while (startReadTag(child, ld)){}; continue } 
Похожие вопросы