Скажем, я хочу, чтобы написать один раз, ворота в который выглядит следующим образом ...Кроме foo ++, есть ли другой способ иметь переменное значение изменения после его вычисления в одном выражении?
int closing = 1;
if(closing-- > 0){
//this will only work once
}
Мне интересно, если есть какой-либо другой механизм, который работает таким образом (или могут быть сделаны в), так что я может потенциально перегрузить оператор (так сказать), чтобы вести себя аналогично с объектами.
У меня такое чувство, что это не выполнимо, но мне было бы очень любопытно узнать, как, если я ошибаюсь.
Sample «желание» Код ...
class MagicObject{
public String oldVal = "apple"
public String magicPostEvalString(String newVal){
return oldVal;
oldVal = newVal;
}
}
MagicObject mo = new MagicObject();
if(mo.magicPostEval("orange").equals("apple"))
//this will also only happen once
Обратите внимание, что в моем magicPostEvalString значение создается после возвращения, так что она возвращает старое значение до начала его модификации.
По существу это то, что делает foo ++ ... он оценивает, а затем изменяет значение.
написать код, который вы * хотел * будет работать, поэтому мы понимаем, что вы хотите – Bohemian
Если эта переменная является членом какого-либо класса, другой поток может изменить его. Я точно не понимаю ваш вопрос, объясните больше и дайте дополнительный контекст. –
Java не позволяет перегрузке оператора ... Если вы имели в виду это буквально. – initramfs