сделать простецкий калькулятор.
Накидываю в окошко кнопки циклом (пик 1).
И потом добавляю им команды. Проблема в том, что если делать это втупую (пик 2), то все работает. Если добавлять в цикле (пик 3, почему-то прикрепился ниже) отдельным циклом или в том же цикле, не важно, каждая кнопка вызывает метод clicked и передаёт в него не себя а последнюю кнопку. Вернее кнопку под номером i, то есть если после цикла я изменю i на 3, то все будут передавать третью кнопку.
Я так понимаю, это то как работают лямбды, то работают не со значениями а с переменными.
Но я это кардинально не понимаю, ведь int - неизменяемый тип данных и в момент i += 1 фактически создаётся новая переменная, на сколько я понимаю. А старая теряется, пока ее не сожрёт сборщик мусора.
Может кто-нибудь внятно объяснить что происходит и как поправить код, чтобы работало?
Актуально
У тебя в переменной не изменяется значение инта, а изменяется ссылка на объект инта
Я в лямбду передаю что - ссылку или значение?
Ты передаешь переменную)
То есть ссылку
Точнее так
Обсуждают сегодня