我想调用一个函数,但前提是它返回值true。函数本身在正常调用时修改全局变量;我想知道if
语句是否永久存储这些更改,或者它是否仅测试函数的结果并在测试后将变量重置为先前的值?
换句话说,我可以使用此代码:
if(function() == true)
function();
并且function
只会被调用一次,还是会被调用两次?
答案 0 :(得分:4)
答案是它会在条件中被调用一次,如果它返回true,那么它将被第二次执行。
答案 1 :(得分:1)
method
被调用两次(前提是它在第一次运行时返回true),method
所做的任何更改都是永久性的,除非你以某种方式明确地反转它们。
答案 2 :(得分:1)
function()
是一种..方法。考虑一下:
private boolean function() {
/* block of code */
return true;
}
当您到达if
语句时,会调用function()
。意味着执行了代码块。然后,function()
返回 true 。
现在,您输入了if
块,然后再次执行function()
..意味着代码块将再次执行。
通常,如果您有一个返回boolean
并执行某项操作的方法,则将结果分配给变量:
boolean result = function();
然后你可以在result
上询问你想要的任何内容以查看方法的输出(通常true
表示成功运行,false
表示出现问题)。
答案 3 :(得分:0)
function()
如果在第一个实例中返回true
,则会被调用两次。
但是为什么你需要使用函数的返回值来决定是否调用该函数?您似乎可以将此逻辑合并到function()
本身。如果调用者需要知道function()
做了什么,您可以适当调整返回值。
还有一句话:如果你正在修改全局变量,那么你应该考虑并发问题。您可能需要将function()
标记为synchronized
。
答案 4 :(得分:0)
如果您的函数在TRUE
条件下返回IF
,那么您的函数将被称为两次。
如果它返回FALSE
,则IF
条件中的函数将被称为一次