gpt4 book ai didi

scala - 为什么在 Scala 中使用 '~' 运算符会给我一个负值

转载 作者:行者123 更新时间:2023-12-04 16:43:03 27 4
gpt4 key购买 nike

我是 Scala 的新手,并试图访问 scala not 运算符。我知道我可以使用“-”运算符进行逻辑非运算。但有时这个运算符会给我一个否定的答案,例如 (-1)

例如 :

 val x = 1
val y =(~x)

这里的值 y 给了我 -1 而不是 0。但我需要 1 或 0 形式的答案。有人能告诉我我在这里遗漏了什么吗?
提前谢谢你的帮助。

最佳答案

与许多其他语言不同,Scala 不支持在需要 bool 值的上下文中使用数字或其他类型的值。例如,以下行均无法编译:

if (1) "foo" else "bar"
if ("1") "foo" else "bar"
if (List(1)) "foo" else "bar"

一些语言有“真实性”的概念,在这里可以用来确定条件是否成立,但 Scala 没有——如果你想要一个 bool 值,你需要使用 Boolean .

这意味着普通的逻辑否定对数字没有意义,而 ~是完全不同的东西——它给你按位否定,这不是你想要的。相反,您似乎想要这样的东西:
val x = 1
val nonzeroX = x != 0
val y = !nonzeroX

即,您明确地将您的数字转换为 bool 值,然后使用标准逻辑否定( ! )处理该数字。

关于scala - 为什么在 Scala 中使用 '~' 运算符会给我一个负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36719544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com