布尔值有 post 赋值运算符吗?
Is there a post-assignment operator for a boolean?
你好,在 Java 中有这样的可能吗?
boolean flag = true;
if(flag) return flag = false; // return true and assign false to flag afterwards
澄清一下。上面的工作,但首先分配 false 。我想要实现的是 return 标志一旦 true
并在之后将其重置为 false
。
结构看起来像这样:
boolean flag = false;
// some operations which can set the flag true
if(flag){ flag = false ; return true};
// some operations which can set the flag true
if(flag){ flag = false ; return true};
// some operations which can set the flag true
if(flag){ flag = false ; return true};
我正想在return flag = false;
之前一次性完成
不,没有任何内置功能可以满足您的描述。你会用一个临时变量来做到这一点:
boolean flag = true;
boolean returnValue = flag;
flag = false;
return returnValue;
或根据您进一步编辑问题("The structure looks something like this"),您可以使用!
:
boolean flag = false;
// some operations which can set the flag true
if(flag) return !(flag = false);
// some operations which can set the flag true
if(flag) return !(flag = false);
// some operations which can set the flag true
if(flag) return !(flag = false);
我真的,真的不会那样做。这是不必要的迟钝。
看看java.util.concurrent.AtomicBoolean。我没试过这个,但它可能会给出你所询问的行为:
AtomicBoolean flag = new AtomicBoolean(true);
System.out.println("First, I'm " + flag.get());
Boolean was = flag.getAndSet(false);
System.out.println("I was " + was + " but now I'm " +
Flag.get());
不,没有办法做到这一点。
为什么不呢?
好吧,您需要向 Java 语言设计者询问真正的答案,但我想他们会立即驳回这样的提议。 Java 设计 是一种易于学习、阅读和理解的语言。添加旨在以简洁的方式做 "clever" 事情的运算符可能会使语言更难学习,更难阅读......对于 普通 程序员。而且,如果运算符仅在极少数用例中真正有用,那么可读性与实用性的争论就更难取胜了。
此外,由于与其他(现有)语言功能的交互,向 Java 添加新功能在技术上通常比您想象的要困难。
实际上,有先例可以支持这一点。 Project Coin 中的 Java 7 / 8 修订提案之一是添加 elvis operator to Java. The proposal was considered ... and ultimately dismissed.
你好,在 Java 中有这样的可能吗?
boolean flag = true;
if(flag) return flag = false; // return true and assign false to flag afterwards
澄清一下。上面的工作,但首先分配 false 。我想要实现的是 return 标志一旦 true
并在之后将其重置为 false
。
结构看起来像这样:
boolean flag = false;
// some operations which can set the flag true
if(flag){ flag = false ; return true};
// some operations which can set the flag true
if(flag){ flag = false ; return true};
// some operations which can set the flag true
if(flag){ flag = false ; return true};
我正想在return flag = false;
不,没有任何内置功能可以满足您的描述。你会用一个临时变量来做到这一点:
boolean flag = true;
boolean returnValue = flag;
flag = false;
return returnValue;
或根据您进一步编辑问题("The structure looks something like this"),您可以使用!
:
boolean flag = false;
// some operations which can set the flag true
if(flag) return !(flag = false);
// some operations which can set the flag true
if(flag) return !(flag = false);
// some operations which can set the flag true
if(flag) return !(flag = false);
我真的,真的不会那样做。这是不必要的迟钝。
看看java.util.concurrent.AtomicBoolean。我没试过这个,但它可能会给出你所询问的行为:
AtomicBoolean flag = new AtomicBoolean(true);
System.out.println("First, I'm " + flag.get());
Boolean was = flag.getAndSet(false);
System.out.println("I was " + was + " but now I'm " +
Flag.get());
不,没有办法做到这一点。
为什么不呢?
好吧,您需要向 Java 语言设计者询问真正的答案,但我想他们会立即驳回这样的提议。 Java 设计 是一种易于学习、阅读和理解的语言。添加旨在以简洁的方式做 "clever" 事情的运算符可能会使语言更难学习,更难阅读......对于 普通 程序员。而且,如果运算符仅在极少数用例中真正有用,那么可读性与实用性的争论就更难取胜了。
此外,由于与其他(现有)语言功能的交互,向 Java 添加新功能在技术上通常比您想象的要困难。
实际上,有先例可以支持这一点。 Project Coin 中的 Java 7 / 8 修订提案之一是添加 elvis operator to Java. The proposal was considered ... and ultimately dismissed.