是否存在用于“真”,“假”和切换布尔值的术语?[关闭]


23

可以说我试图在一次技术会议上描述我的代码。

首先,我将布尔值设置foobartrue

其次,我将布尔值设置foobarfalse

似乎有点罗word。如果foobar被拨动,我可能会说,

第三,我切换 foobar

通过这里的含义,您知道它是布尔值。所以我不应该能够:

第四,我 foob​​ar进行了真实化

第五,我伪造 foob​​ar

通过暗示,哪个还会告诉我的听众我们正在处理布尔变量?有合适的术语吗?谢谢。


16
“我将foobar设置为true / false”不是那么罗word,很明显这是一个布尔。对于听众,IMO非常清楚“切换”。
FilipMilovanović'18年

8
“首先,将布尔foobar设置为true,然后,将布尔foobar设置为false”。您不能首先将其设置为false吗?;)
David Arno

2
我一直以为它被称为翻转,但显然这是位而不是
布尔

16
我读过falsify等同于创建伪造品,而不将其值设置为false。
CodesInChaos

6
您确定要以如此低的级别描述代码吗?当然,如果有人想要这么低的描述,他们只会阅读代码。我并不是说没有理由使用这种术语,但是我希望它很少见。
迪克林

Answers:


52
  • 将值设置为true就是设置
  • 将其设置为false将清除它。
  • 更改当前值会切换它。

当然,您也可以使用“将其设置为true”“将其设置为false”


10
我不关联将值设置为false来清除它。对我来说,清除是指:不是对还是错。
Pieter B

49
@PieterB:好吧,这取决于上下文。如果我们在谈论布尔标志,那么“设置”和“清除”标志是相当普遍的术语。
FilipMilovanović'18年

7
@FilipMilovanović在变量的上下文中,设置变量意味着为所述变量分配一个值,在布尔变量的上下文中,此值可以为true或false。奇怪的是:嘿,设置一个变量意味着给它分配一个值...除非它是一个布尔变量,然后实际上是在我们设置它时,我们意味着我们分配了一个值:“ true”
Pieter B

6
@PieterB如果它可以是“ true or false”,则它不是二进制布尔值(大多数人在听到单词时会想到的布尔值),而是三元对/错/不确定的东西。话虽这么说,设置/清除术语来自标志。并非所有布尔变量都是标志,因此该术语不适用于许多用例。
立方'18年

7
@PieterB:是的-说“设置bool变量”并期望每个人都理解它的意思是“将其设置为true”会很奇怪;但是如果它代表一个标志,则“设置标志”是常用的东西,意味着将代表标志的布尔值设置为true(或将代表标志的位设置为1)。(PS但是,immibis回答不考虑到这一点。)
菲利普Milovanovic的

66

如果可能的话,您应该尝试描述它代表的内容,而不是只关注布尔值。一些例子:

  • 服务吗?开始/停止而不是开始=真/假
  • 游戏引擎中的特殊效果?开关
  • 电信号?设置/重置
  • ...

这样,您就可以更自然地交谈。因此,在您的会议中,您只需“启动foobar然后停止它”(如果foobar实际上是一种服务),而不是“对foobar进行伪造然后对其进行伪造”。

当您确实需要讨论布尔值时,可以使用“设置/重置”或“设置为true”和“设置为false”。在所有情况下,“切换”听起来都很好。

而且,如果您在一家布尔商店工作(可能意味着什么),那么您可能需要的单词比字典所提供的要多。在这种情况下,诚实和伪造只是您的微话的一部分


16
必须同意...布尔值是对您真正在说的内容进行建模的实现...因此,请改为谈论它!
Maybe_Factor

2
我不喜欢将布尔值设置为true。因为我使用变量的方式始于未初始化,所以基本上您还不能使用它们,而设置变量(true或false)的行为就是初始化。设置为始终表示“真”会引起混乱。
Pieter B

1
同样,术语的使用也转化为代码。通常,并非总是如此,通常最好使用二值枚举而不是内置的布尔类型。signal = HighVoltage或者signal = ActiveIMHO比signal = true
立方

请注意,正确命名的布尔属性/变量将始终立即显示您应为值使用的名称。想想isStartedisActiveisCaseSensitivemockConnection,... @PieterB:我部分同意你的看法。“设置布尔值”本质上并不意味着将其设置为true。但是,“设置isActive标志”可以合理地解释为将其设置为true。
平坦:

1
@立方:我不同意。除了将来的扩展,似乎没有必要使用二进制枚举。signal = true确实还不清楚,但是如果您要使用,signal = Active则不妨使用isSignalActive = true。请注意,这主要适用于明显互斥且精确互补的描述符。活动/不活动符合要求。HighVoltage不会,因为“非高压”可能表示“低压”,也可能表示“低压或中压”。在后一种情况下,布尔参数显然不适用。在前者中,确实如此。
平坦

2

我喜欢“设置” /“清晰”,但请注意措辞不明确。正如Filip指出的那样,“设置布尔变量”可以理解为向变量写入一些值。但是“设置标志”更为明确。


相关术语:将0 /非零整数转换为0/1值称为“布尔化”

如果实际上将0/1值用作整数(而不是true / false bool),则可能要使用该词。否则,只有在谈论编译器必须执行的操作成本时,它才会出现。(或者,如果您正在使用SIMD进行手动矢量化比较,则在每个矢量元素中产生全零/全一比特)。

在C和C ++中,a bool可以隐式转换回为0或1的整数,并且在常规实现bool中存储为1字节的值,该值可以为0或1(而不仅仅是任何非零值)。允许高效a && b,但实际上许多C编译器都缺少优化


bool booleanize(int a) { return a; }   // C++

ret在大多数体系结构上,该函数可编译为多个指令(不包括)。(MIPS是一个有趣的例外,具有比较寄存器指令,而不是单独的标志/条件代码寄存器)。 在适用于x86-64,MIPS和ARM thumb的Godbolt编译器浏览器上,我们可以看到x86-64版本是:

    test    edi, edi    # set flags according to   a & a
    setne   al
    ret                 # return value in AL, the low byte of RAX

对不起,这个布尔化的例子有点大/没意思!


0

我认为“设置Foobar为true”和“设置Foobar为false”是简单明了的。我不认为这些短语有单独的单词,并且当您既需要技术又需要精确的时候,有时愿意多讲一点而不是冒着使听众迷惑的感觉。


-1

“设置”是描述将值分配给变量的行为的正确方法。如果您想对此进行深入研究,可以将其称为“任务”,但是“集合”非常普遍。实际上,编写setFoobar()(和getFoobar())执行分配的方法是惯用的Java 。C#在getset属性定义方面走得更远。

关于使用“真实化”和“伪造”来“通过暗示,告诉我的听众我们正在处理布尔变量”的第二点,当您说时,您已经告诉听众该变量为布尔值:

我设置Foobartrue


1
Java中返回布尔属性的方法的“标准”实际上是isFoobar()
JimmyJames,

-1

也可以使用断言撤消,例如在Prolog中最经常谈论命题而不是简单变量时。通常,根据布尔值表示什么,会有不同的术语,而不是针对所有具有布尔值的语言(设置/清除标志或位,启用/禁用设备或模式,声明/收回命题,可能更多)使用一个通用术语。


我同意assert,不同之处在于对程序员而言已经意味着其他不同的东西(例如,如果表达式还不为真,则抛出异常)。
ChrisW

@ChrisW我不知道您认为对Prolog进行编程的人是不是程序员,但是1972年在Prolog中使用了它,因此C宏改变了现有的含义。
皮特·柯坎

-1

将布尔值从更改truefalse,反之亦然称为取反

将布尔值设置false为会伪造布尔值。如果您说“实话实说”,我会理解的,但这听起来不对。我不确定动词是做什么用的true,所以它可能是正确的。

在您开始使用“真实”的意愿之前,我会等一个更好的答案的人来。


1
这里的问题是,您可能使用了negatingfalsifying术语,但是我分别使用togglereset / clear。实际上,除非阅读此问题,否则我永远都不会碰到伪造的。也许我只是变老了,而我不了解今年的流行术语:)
David Arno,

7
“ falsify”在英语中的含义与您对布尔变量的用法完全不符。如果您告诉我您是在“伪造”变量,我可能会理解您要说的话,但是当您试图告诉我您在说谎它们的价值时,我会先进行分析。
立方'18年

1
IMO用英语“断言”来代替“篡改”,但是(断言)给程序员带来了错误的印象。
ChrisW

-3

布尔值等效于SPST(单刀单掷)电子开关:将其打开关闭


2
至少对我来说,“打开done变量”或“ error关闭变量”都听起来有些不正确。其他答案建议的替代方案似乎更为普遍-“将done变量/布尔/标志设置为[true]”或“ error标志已清除”。
塞比
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.