这里选择的答案表明它检查数组是否为空。如果它不是空的,那意味着应该执行代码。
How to check if array is null or empty?
但是,我看到相反的情况。当我将if (!array.count)
与非空数组一起使用时,不会执行其中的代码。如果我将if (array.count)
与非空数组一起使用,则执行其中的代码。我在这里缺少什么?
答案 0 :(得分:3)
该答案中的代码对于提出的问题是正确的。答案中的文字令人困惑。该问题的目标是查看数组是否为“空”。接受的答案有代码:
if (!array || !array.count){
}
该答案中的文字说明:
检查数组是否为零,如果不是,则检查它是否为空。
但if
语句实际上意味着“如果数组为零或数组计数为零,则执行某些操作”。所以恰恰相反。
所以代码是正确的但是文本是错误的(或者至少是误导性的)。
回到你自己的问题。
if (array.count) {
// same as array.count != 0
// array is not empty (non-zero count)
}
或:
if (!array.count) {
// same as !(array.count != 0) or array.count == 0
// array is empty (zero count)
}
请记住,在C,C ++,Objective-C中,如果表达式的计算结果为非零值,则if
语句将被视为“true”,如果表达式的计算结果为零,则将!
语句视为零。并且在开始时使用#standardSQL
SELECT t.*
FROM (
SELECT ARRAY_AGG(t1 ORDER BY t1.col4) arr, MIN(t2.col2) cnt
FROM table1 t1 JOIN table2 t2 ON t1.col1 = t2.col1
GROUP BY t1.col1
), UNNEST(arr) t WITH OFFSET num
WHERE num < cnt
会将“true”否定为“false”或“false”否定为“true”。