Gente, He estado escribiendo código en Scala últimamente para enseñarme el idioma y en algunos experimentos recientes, he usado an NLP library to produce a set of part-of-speech tagged words a partir de la entrada de un usuario.Comprensión de la lista Scala de Idiomatic: primer elemento que coincide con
Quiero escribir una función que me da el primer verbo en la oración. Si no hay verbos, entonces quiero suponer que la primera palabra del conjunto es el verbo (por ejemplo, si el jugador acaba de escribir "quién" o "tiempo de actividad", mi juego los considera verbos).
El siguiente es un bloque de código tan feo que solo una madre podría amar, y apesta a una programación imperativa y quiero refactorizarlo en algo más parecido a Scala idiomático, idealmente algo que no tiene un solo "si" declaración en él.
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
}
}
Las "palabras" variable es de tipo ListBuffer [EnrichedWord], donde EnrichedWord es mi clase que contiene una parte del discurso (POS, contiene caso de objetos como verbo, sustantivo, etc) y la palabra original (valor)
Cualquier orientación que puedan proporcionar los genios de Scala al refaccionar este código tan feo sería fantástico.
"... sólo una madre podría amar." –
... solo una madre podría amar. "¡Mejor frase que he leído hoy! –