private boolean checkCrashSelf(Point point, boolean ignoreTail){
return ignoreTail ?
snakeBodyPoints.subList(0, snakeBodyPoints.size()-1).contains(point) : snakeBodyPoints.contains(point);
}
问号在这里的作用是什么呀?
回答不易,求求您采纳点赞哦
这个问号是三目运算符的一部分。三目运算符是一种简写形式的条件运算符,其语法形式为 condition ? value1 : value2,它会根据 condition 的真假值来返回 value1 或 value2。
在这个代码片段中,三目运算符根据 ignoreTail 变量是否为 true 来返回不同的值。如果 ignoreTail 为 true,则返回 snakeBodyPoints.subList(0, snakeBodyPoints.size()-1).contains(point) 的值,否则返回 snakeBodyPoints.contains(point) 的值。
这样的话,这个函数会根据ignoreTail的值来返回不同的结果,而不用使用if语句,更简洁易懂。
表达式 ? 表达式真返回这个 : 表达式假返回这个
因为return这里返回的是条件运算符?:运算后的结果 ,这行代码的意思是,如果ignoreTail这个布尔值为真,则执行snakeBodyPoints.subList(0, snakeBodyPoints.size()-1).contains(point)这个语句,并且返回它的运算结果;如果ignoreTail这个布尔值为假,则执行snakeBodyPoints.contains(point)这个语句,并且返回它的结果。
参考链接:
这是java中三目运算符的知识:
三目运算符:又称之为三元运算符
2、格式:(关系表达式)?表达式1:表达式2;
3、如果关系表达式的结果为true,运算后的结果是表达式1;
4、如果关系表达式的结果为false,运算后的结果是表达式2;
望采纳!!!
问号是条件运算符,即三目运算符。它用于对布尔表达式进行判断,根据布尔表达式的真假情况,返回相应的值。在这个例子中,当ignoreTail为true时,将返回snakeBodyPoints.subList(0, snakeBodyPoints.size()-1)的结果,否则将返回snakeBodyPoints.contains(point)的结果。