Одна из самых привлекательных особенностей Kotlin - нулевая безопасность. Вы не получите исключений NullPointerExceptions, если не используете оператор !!
. Оператор !!
следует использовать только в том случае, если вы проверили свой код и логически знаете, что в этой точке кода параметр не может иметь значение null, но logi c, чтобы понять это, слишком много для компилятора.
Вы используете оператор !!
в месте, где значение curr
очень хорошо может быть нулевым. Вы устанавливаете curr = curr.next
, и next
будет null
в конце вашего списка, поэтому curr
будет null
, когда вы используете в нем оператор !!
.
Эта строка кода в любом случае не имеет смысла, потому что вы возвращаетесь из обеих ветвей вашего if
/ else
здесь, поэтому вы не сможете когда-либо проверить более одного узла вашего списка.
Возможный способ сделать это:
fun isListSorted(): Boolean {
var curr = head ?: return true
while(true) {
val next = curr.next ?: return true
if (curr.value < next.value)
return false
curr = next
}
}