Хелпикс

Главная

Контакты

Случайная статья





Использование условных выражений



Использование условных выражений

fun max(a: Int, b: Int): Int { if (a > b) return a else return b}

Также if может быть использовано как выражение (т. е. if ... else возвращает значение):

fun max(a: Int, b: Int) = if (a > b) a else b

Nullable-значения и проверка на null

Ссылка должна быть явно объявлена как nullable (символ ?) когда она может принимать значение null.

Возвращает null если str не содержит числа:

fun parseInt(str: String): Int? { // ...}

Использование функции, возвращающей null:

fun main(args: Array<String>) { if (args.size < 2) { print("Ожидается два целых числа") return } val x = parseInt(args[0]) val y = parseInt(args[1]) // Использование `x * y` приведет к ошибке, потому что они могут содержать null if (x != null && y != null) { // x и y автоматически приведены к не-nullable после проверки на null print(x * y) }}

или

// ... if (x == null) { print("Неверный формат числа x '${args[0]}'") return } if (y == null) { print("Неверный формат числа у '${args[1]}'") return } // x и y автоматически приведены к не-nullable после проверки на null print(x * y)

Проверка типа и автоматическое приведение типов

Оператор is проверяет, является ли выражение экземпляром заданного типа. Если неизменяемая внутренняя переменная или свойство уже проверены на определенный тип, то в дальнейшем нет необходимости явно приводить к этому типу:

fun getStringLength(obj: Any): Int? { if (obj is String) { // в этом блоке `obj` автоматически преобразован в `String` return obj.length } // `obj` имеет тип `Any` вне блока проверки типа return null}

или

fun getStringLength(obj: Any): Int? { if (obj !is String) return null // в этом блоке `obj` автоматически преобразован в `String` return obj.length}

или даже

fun getStringLength(obj: Any): Int? { // `obj` автоматически преобразован в `String` справа от оператора `&&` if (obj is String && obj.length > 0) return obj.length return null}


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.