如何解决为什么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 举报,一经查实,本站将立刻删除。