j'ai la méthode suivante
val dateFormat = SimpleDateFormat("yyyy-MM-dd")
fun parseBirthdateLines(paragraph: String): List<Pair<Date, String>> {
val lines = paragraph.split("\n")
return lines.map { l -> Pair(dateFormat.parse(l.split(" ")[0]), l.split(" ")[1]) }
}
où l.split(" ")
est appelé deux fois.
Comment écrire de manière plus intelligente dans un style de programmation fonctionnelle ?
PS 1 : je suis curieux d'avoir une solution avec fold
si possible
PS 2 : Pour plus de lisibilité, la version originale a été écrite comme
fun parseBirthdateLines(paragraph: String): List<Pair<Date, String>> {
val lines = paragraph.split("\n")
var results = mutableListOf<Pair<Date, String>>()
for (line in lines) {
val content = line.split(" ")
val date: Date = dateFormat.parse(content[0])
val firstName = content[1]
results.add(Pair(date,firstName))
}
return results
}
Je pense qu'il existe une manière plus fonctionnelle et optimisée d'écrire ceci, mais voici un pli de base + avec exemple :
val dateFormat = SimpleDateFormat("yyyy-MM-dd")
fun parseBirthdateLines(paragraph: String): List<Pair<Date, String>> {
val lines = paragraph.split("\n")
return lines.fold(listOf<Pair<Date, String>>()) { list, line ->
with (line.split(" ")) {
list + Pair(dateFormat.parse(this[0]), this[1])
}
}
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots