加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为什么在scala中使用’?’运算符会给出负值

发布时间:2020-12-16 18:45:20 所属栏目:安全 来源:网络整理
导读:我是 scala的新手并且正在尝试访问scala not运算符.我知道我可以使用’ – ‘运算符进行逻辑NOT运算.但有时这个运算符给了我一个否定的答案,如(-1) 例如 : val x = 1 val y =(~x) 这里的值y给我一个-1而不是一个0.但是我需要一个1或0形式的答案.有人可以告
我是 scala的新手并且正在尝试访问scala not运算符.我知道我可以使用’ – ‘运算符进行逻辑NOT运算.但有时这个运算符给了我一个否定的答案,如(-1)

例如 :

val x = 1
 val y =(~x)

这里的值y给我一个-1而不是一个0.但是我需要一个1或0形式的答案.有人可以告诉我在这里我缺少什么?
提前谢谢你的帮助.

解决方法

与许多其他语言不同,Scala不支持在需要布尔值的上下文中使用数字或其他类型的值.例如,以下所有行都不编译:

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

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

这意味着普通的逻辑否定对数字没有意义,并且?是完全不同的东西 – 它给你按位否定,这不是你想要的.相反,你似乎想要这样的东西:

val x = 1
val nonzeroX = x != 0
val y = !nonzeroX

即,您将数字显式转换为布尔值,然后使用标准逻辑否定(!)进行处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读