【发布时间】:2021-01-05 10:58:48
【问题描述】:
我正在尝试将 java 程序的模块转换为 Scala。到目前为止,我已经能够在我转换的每个模块中应用 Scala 的函数式编程范式及其语法。但我遇到了一种进行一些验证的方法,使用continue,最后使用yield 输出。
下面是Java代码:
public boolean checkColumn(String server, String database, String schema, String table, String column) {
boolean bServer, bDatabase, bSchema, bTable, bColumn, bRet = false;
for (int i = 0; i < columns.length; i++) {
if ((server == null) || (server.length() == 0)) {
bServer = true;
} else {
bServer = columns[i][0].equalsIgnoreCase(server);
}
if (!bServer) continue;
if ((database == null) || (database.length() == 0)) {
bDatabase = true;
} else {
bDatabase = columns[i][1].equalsIgnoreCase(database);
}
if (!bDatabase) continue;
if ((schema == null) || (schema.length() == 0)) {
bSchema = true;
} else {
bSchema = columns[i][2].equalsIgnoreCase(schema);
}
if (!bSchema) continue;
bTable = columns[i][3].equalsIgnoreCase(table);
if (!bTable) continue;
bColumn = columns[i][4].equalsIgnoreCase(column);
if (!bColumn) continue;
bRet = true;
break;
}
return bRet;
}
虽然我知道最近版本的 Scala 中没有 continue,但我能够理解如何在 Scala 中编写相同的代码。我尝试构建一个for循环如下:
val finalReturn = for {i <- 0 until columns.length
} yield bRet
但是想不出一种方法来在 for 循环中形成所有 if 条件和 continue 的逻辑。谁能告诉我如何在 Scala 中编写相同的代码?
【问题讨论】:
标签: java scala short-circuiting