могу найти в документации почему
В картинке код, я от туда лишнее поудалял, оставил минимум
Косяк в том, что в лямбде skip не срабатывает замыкание на currentBook. А в like срабатывает
В результате при вызове skip из BookCard значение bookId всегда оказывается одинаковым
Предпологаю, что дело в перекомпилязии Composable. Судя по всему skip в такой записи не перекомпилируется при обновлении стейта
А может причина другая
В общем, может кто знает подскажет, куда в документации смотреть?
Как skip внутри BookCard вызывается?
А зачем в компоте этой шляпой заниматься если она в стейте есть
А, сори, пропустил слово "как" в вопросе) Вот так skip().. даже не знаю как еще его можно вызывать))
Я хотел просто код посмотреть внутри BookCard
очень много кода, сложно что то конкретное вычленить
currentBook где-то меняется же? Получается в локальной переменной, которая используется внутри лямбды, будет ссылка на старый экземпляр
да, это то что происходит однако, если обновляется стейт, то обновляется currentBook в переменной. Book это объект значит передается по указателю. Старое значение там должно вознивать если где то было копирование объекта. Но ведь его небыло.. А в лямбде like и вовсе все прекрасно работает. Видимо за счет того, что там замыкание на state, а не на currentBook
В котлине нет указателей
эмм.. то что их не существует явно, не значит что их нет. это базовое понятие, они есть всегда. объект передается по адресу. адрес это указатель нет там не указателей, а ссылок. потому что ссылки это чисто плюсовая штука
Обсуждают сегодня