问题很简单,Java中是否有著名函数iif的等效函数?
比如:
IIf (vData = "S", True, False)
提前感谢。
问题很简单,Java中是否有著名函数iif的等效函数?
比如:
IIf (vData = "S", True, False)
提前感谢。
vData.equals("S") ? true : false
或者在这种特殊情况下,显然可以直接编写
vData.equals("S")
IIF(x, y, z)
将始终评估 y
和 z
(导致两者的副作用都可见),而 x ? y : z
只会评估 y
或 z
中的一个(只导致其中一个的副作用可见)。 - Gabe是的,三元运算符? :
vData.equals("S") ? true : false
public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
return test ? ifTrue : ifFalse;
}
ifTrue
和ifFalse
参数必须是相同的类型,可以使用三元运算符或使用此通用替代方法。)if相当于逻辑上的“当且仅当”。
boolean result;
if (vData.equals("S"))
result = true;
else
result = false;
或者
boolean result = vData.equals("S") ? true : false;
或者
boolean result = vData.equals("S");
编辑:然而很可能您不需要变量,而是可以对结果进行操作。例如:
if (vData.equals("S")) {
// do something
} else {
// do something else
}
顺便提一下,使用这种方式可能被视为良好的实践
if ("S".equals(vData)) {
两者的区别在于如果vData为空,第一个示例会抛出异常,而第二个则会返回false。你应该考虑一下你更希望发生什么。
iif
是一种内联-if函数,它以布尔值作为其第一个参数,当为真时返回第二个参数,当为假时返回第三个参数。 - Gabe