将 If 语句链更改为 Switch 表达式
Changing a chain of If-statements into a Switch-expression
我正在尝试将下面的 if
语句 转换为 switch
表达式 .
public static int parseDays(String durationString) {
String[] parts = durationString.split(" ");
if (parts.length == 2) {
return unitValueCalculation(parts[1], parts[0]);
}
else if (parts.length == 1)
{
if (parts[0].equalsIgnoreCase("once")) return 1;
}
return 0;
}
这是我得到的:
public static int parseDays(String durationString) {
switch (durationString) {
case durationString.split(" ").length == 2 -> unitValueCalculation(parts[1], parts[2]);
}
不过,我不确定如何处理 case 语句。
如有任何想法,我们将不胜感激。
您提供的代码可以变成这样的switch-expression
:
public static int parseDays(String durationString) {
String[] parts = durationString.split(" ");
return switch(parts.length) {
case 2 -> unitValueCalculation(parts[1], parts[0]);
case 1 -> parts[0].equalsIgnoreCase("once") ? 1 : 0;
default -> 0;
};
}
parts
数组的长度应该用在switch
的括号()
里面。每个特定长度(1
和 2
)应该用作 case-constant.
default
案例涵盖所有未指定的数组大小。
我正在尝试将下面的 if
语句 转换为 switch
表达式 .
public static int parseDays(String durationString) {
String[] parts = durationString.split(" ");
if (parts.length == 2) {
return unitValueCalculation(parts[1], parts[0]);
}
else if (parts.length == 1)
{
if (parts[0].equalsIgnoreCase("once")) return 1;
}
return 0;
}
这是我得到的:
public static int parseDays(String durationString) {
switch (durationString) {
case durationString.split(" ").length == 2 -> unitValueCalculation(parts[1], parts[2]);
}
不过,我不确定如何处理 case 语句。
如有任何想法,我们将不胜感激。
您提供的代码可以变成这样的switch-expression
:
public static int parseDays(String durationString) {
String[] parts = durationString.split(" ");
return switch(parts.length) {
case 2 -> unitValueCalculation(parts[1], parts[0]);
case 1 -> parts[0].equalsIgnoreCase("once") ? 1 : 0;
default -> 0;
};
}
parts
数组的长度应该用在switch
的括号()
里面。每个特定长度(1
和 2
)应该用作 case-constant.
default
案例涵盖所有未指定的数组大小。