当前位置: 首页 > 知识库问答 >
问题:

任何语言都有一元布尔切换运算符吗?

景恩
2023-03-14
a += 3;   // for a = a + 3
a *= 3;   // for a = a * 3;
a <<= 3;  // for a = a << 3;
a = !a;
this.dataSource.trackedObject.currentValue.booleanFlag =
    !this.dataSource.trackedObject.currentValue.booleanFlag;

(是的,得墨忒尔定律,我知道)。

所以我想知道,有没有一种语言具有一元布尔切换运算符,允许我缩写a=!a而不重复a的表达式,例如

!=a;  
// or
a!!;

让我们假设我们的语言有一个适当的布尔类型(就像C++中的bool)并且a属于这种类型(因此没有C样式的int a=true)。

共有1个答案

方高丽
2023-03-14

这个问题从纯理论的立场来看确实很有趣。撇开一元的、变异的布尔切换运算符是否有用,或者为什么许多语言选择不提供一个,我尝试去看看它是否真的存在。

TL;DR显然没有,但Swift允许您实现一个。如果你只想看看它是如何完成的,你可以滚动到这个答案的底部。

在(快速)搜索了各种语言的特性之后,我可以肯定地说,没有任何一种语言将这个运算符实现为严格的原地变异操作(如果找到的话,请纠正我)。所以接下来的事情将是看看是否有语言可以让你构建一个。这需要两件事:

    null
prefix operator ^

prefix func ^ (b: inout Bool) {
    b = !b
}

var foo = true
print(foo)
// true

^foo

print(foo)
// false
 类似资料:
  • 概述 布尔运算符用于将表达式转为布尔值,一共包含四个运算符。 取反运算符:! 且运算符:&& 或运算符:|| 三元运算符:?: 取反运算符(!) 取反运算符是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。 !true // false !false // true 对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都

  • c中有没有既是一元又是二元的运算符?这个问题在一次采访中被问到。

  • 在JavaScript中切换布尔值有什么简单的方法吗? 到目前为止,除了编写自定义函数之外,我所拥有的最好的函数是三元函数:

  • 本文向大家介绍Java语言一元运算符实例解析,包括了Java语言一元运算符实例解析的使用技巧和注意事项,需要的朋友参考一下 一元运算符,也叫单项算符,一目运算符,一元算符 ,英文名字:UnaryOperator。 描述:接受一个参数为类型T,返回值类型也为T。 源码: 测试代码: 总结 以上就是本文关于Java编程一元运算符的实例介绍,希望对大家有所帮助。感谢大家对本站的支持。

  • 问题内容: 我对何时应该使用布尔运算符与按位运算符感到困惑 与 与 有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果? 问题答案: 以下是一些准则: 布尔运算符通常用于布尔值,而按位运算符通常用于整数值。 布尔运算符是短路,但按位运算符不是短路。 短路行为在这样的表达式中很有用: 按位运算&符将无法正常工作,因为总是会评估双方,即。当你使用布尔运算符时,如果第一个为False,则不计算

  • 前言 上个礼拜介绍了Shell编程范例之数值运算,对 Shell 下基本数值运算方法做了简单的介绍,这周将一起探讨布尔运算,即如何操作“真假值”。 在 Bash 里有这样的常量(实际上是两个内置命令,在这里我们姑且这么认为,后面将介绍),即 true 和 false,一个表示真,一个表示假。对它们可以进行与、或、非运算等常规的逻辑运算,在这一节,我们除了讨论这些基本逻辑运算外,还将讨论Shell编