Почему невозможно увеличить, а затем передать значение в методе set с помощью ++

StackOverflow https://stackoverflow.com//questions/11706330

Вопрос

У меня есть строка кода, которая работает следующим образом:

mrq.setId((mrq.getId()+1));

Но когда я попытался написать это вот так,

mrq.setId((mrq.getId()++));

Это не работает, ошибка в том, Invalid argument ot the operation ++/--

Какова техническая причина этого?

Это было полезно?

Решение

Оператору приращения требуется поле или переменная.Оценка getId() не приводит к появлению поля id;он возвращает копию значения getId() возвращает (под «копией» я подразумеваю буквальную копию для примитивных типов и новую ссылку для ссылочных типов). getId() может быть реализован как return id; внутри страны, но ты не вернешься на поле id, только копия его значения.

Ближайшим эквивалентом будет int i = getId(); setId( getId() + 1 ); return i;, но ты многого просишь, чтобы позволить getId()++ в качестве синтаксического сахара для такого выражения.

Другие советы

x++ существенно эквивалентен x = x + 1, который не имеет смысла в вашем случае:

mrq.getId() = mrq.getId() + 1
.

++ Оператор используется для увеличения значения переменной на 1.так a++ рассматривается как a=a+1.Это означает, что присваивание будет выполняться в операнде, в котором он используется.

Когда ты пишешь mrq.getId()++ он не предоставляет вам переменную операнда, которую он может увеличивать, и, следовательно, это не работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top