我知道基本的if语句结构,但这让我感到困惑
echo $scheckrow['artNumber'];
当handle.length()大于10时返回值,当handle.length()小于10时,是不是应该返回值?
为什么这个if语句恰恰相反?
public void setHandleName(String handle){
if(handle.length() < 10){
return;
}
handleName = handle;
}
if语句应该是
if(false){ //do stuff; }
对于模糊的解释感到抱歉,英语不是我的母语。 任何帮助将不胜感激! 谢谢!
答案 0 :(得分:4)
当handle.length()大于10
时返回值
不,不。它永远不会返回任何值,该方法的类型为void
。如果名称长度至少为10个字符,则设置 handleName
实例字段(如果名称长度少于10个字符,则不设置)。
,当handle.length()小于10时,不应该返回值吗?
不,if
清楚地说“如果句柄长度小于10,则返回”并且之前设置handleName
。 return
立即离开了该功能,绕过了可能跟随的任何代码。
为什么这个if语句恰恰相反?
if(false){ //do stuff; }
因为在这种情况下,逻辑是在<{em} if
块内;在你的第一个例子中,在if
块之后 return
提前(绕过函数的其余部分)。也就是说,你的第一个例子是:
if (!condition) {
return;
}
doSomething();
但你的第二个例子是
if (condition) {
doSomething();
}
以下是您的第一个示例的注释版本:
public void setHandleName(String handle){ // Accept a `handle` string parameter
if(handle.length() < 10){ // If the length of `handle` is less
// than 10, enter the block
return; // Leave this method immediately, without
// doing anything else
} // This is the end of the conditional bit
handleName = handle; // Set `handleName` to `handle`
}
因此,如果我们进入if
块,我们将返回,并且永远不会到达handleName = handle;
行,因此我们从未设置它。如果我们不进入if
块,我们不会提前返回,所以我们做设置它。
我们可以(也可能应该)重写setHandleName
以使用后面示例中的结构:
public void setHandleName(String handle){ // Accept a `handle` string parameter
if(handle.length() >= 10){ // If `handle`'s length is 10 or higher
handleName = handle; // Set `handleName` to `handle`
} // This is the end of the conditional bit
}
答案 1 :(得分:0)
它不会返回任何内容(因为void
返回类型表示)。它设置 handleName
到handle
的值,但仅当handle.length()
大于或等于10.如果handle.length()
小于10,只需return
来自该方法而不再做任何其他事情。
答案 2 :(得分:0)
这是否使代码实际上更清楚?
public void setHandleName(String handle){
if(handle.length() >= 10){
handleName = handle;
}
// otherwise handleName is not set, and the method exits
// nothing is returned because the method is 'void'
}
请注意if(false){ //do stuff; }
永远不会&#34;做东西&#34;