微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么a,b = [nil,nil]在Ruby中为真?

如何解决为什么a,b = [nil,nil]在Ruby中为真?

我正在学习Ruby,但我不明白为什么要进行测试

if (a,b = [nil,nil]) # <--
  true
else
  false
end

评估为真实,而

if (a,b = nil) # <--
  true
else
  false
end

虚假宣传。

通过irb在ruby 2.5和2.7上进行了测试。为复制粘贴测试添加了完整的if-else语句。

解决方法

赋值与赋值右操作数的值相同。对于销毁任务仍然如此。

因此a,b = [nil,nil]的取值为[nil,nil],这是正确的,因为它是一个数组,而数组是真实的,而a,b = nil的取值为nil,这是虚假的。

,

在ruby中,只有2个值为false,即const items = [{ _id: "1",name: "avocado",quantity: 50 },{ _id: "2",name: "pasta",quantity: 60 }] function addItems(newItem) { const index = items.findIndex((curItem) => curItem.name === newItem.name); if (index >= 0) { return items.map((curItem,curIndex) => { return index === curIndex ? { ...curItem,quantity: curItem.quantity + newItem.quantity } : curItem; }); } else { return items.concat(newItem); } } console.log('Current items',items); console.log('Adding a known item',addItems({ _id: "1232",quantity: 50 })); console.log('Adding a new item',addItems({ _id: "23232332",name: "meat",quantity: 50 }));nil本身。

所有其他值均为真,包括nil数组。

此外,分配操作返回分配的右侧,所以

false

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。