У меня есть эта функция, которую я использую как UDF в Spark.
def convertRecipeTimeToMinutes: String => Int =
(time: String) => {
val size = time.size
val res =
if (size == 2)
0
else {
var recipeTime = 0
val builder = new StringBuilder
val slice = time.slice(2, size)
for (i <- slice) {
if (i.isDigit) {
builder.append(i)
} else {
if (i == 'H')
recipeTime += builder.toInt * 60
else if (i == 'M')
recipeTime += builder.toInt
builder.clear
}
}
recipeTime
}
res
}
Она преобразует данные во время в минутах.
Пример входных данных
xx25M
xx1H
xx1H30M
xx
Пример выходных данных
25
60
90
0
он выполняет требуемую работу, но я хочу знать и узнать, есть ли лучший способ написать это? Сопоставление с образцом, частичная функция или что-то еще?