Ребята, в последнее время я писал некоторый код в Scala, чтобы научить себя языку, и в некоторых недавних экспериментах я использовал библиотеку НЛП для создания набора слов, помеченных частью речи из ввода пользователя.
Я хочу написать функцию, которая дает мне первый глагол в предложении.Если глаголов нет, то я хочу предположить, что первое слово в наборе - это глагол (например, если игрок только что набрал «кто» или «время работы», это считается глаголом в моей игре).
Ниже приведен блок кода, настолько уродливый, что может любить только мать, и он воняет императивным программированием, и я хочу преобразовать его в нечто более похожее на идиоматическое Scala, в идеале то, что в нем нет ни одного оператора «если».
def firstVerb = {
if (words.size == 1)
words.head.value
else {
val outWords = words.filter( word => word.pos == Verb)
if (outWords == Set.empty)
words.head.value
else
outWords.head.value
}
}
Переменная "words" имеет тип ListBuffer [EnrichedWord], где EnrichedWord - мой класс, который содержит часть речи (pos, содержит объекты case, такие как Verb, Noun и т. Д.) И оригинал.слово (значение).
Любое руководство, которое вы, гены Scala, можете дать при рефакторинге этого ужасного кода, было бы фантастическим.