is
- проверка типа. as
- это приведение типа.
отличается:
is
возвращение логическое, true или false
as
возвращение этого типа
you используйте is
, если вам нужен только ответ да или нет
пример
if (user is Login)
вы просто хотите получить ответ да или нет, верно? и затем вы делаете что-то еще
, которое вы используете as
, когда хотите попробовать привести к этому типу
пример
(user as? Admin).let{print(it.name.toString())}
этот, который вы хотите проверить, если этот пользователь is Admin or not
, если да, вы хотите использовать это пользовательское значение, чтобы напечатать что-то вроде имени
, поэтому для условия используйте is
для приведения. Используйте as
fun test(objList: List<Any>) = objList.asReversed().forEach {
when(it){ is Message -> println(it)}
}