如何在scala函数中使用函数式编程
how use functional programming in scala function
我正在用 Scala 开发 translate
函数。它包括在类似元音的 'a' , 'e' , 'i', 'o' or 'u'
之前插入“av”字符。
请注意,文本字符串有长度限制。它的长度不应超过 225 个字符,如果它是空的,它应该 return 一个空字符串:
在另一个世界:
如果
text = "abdcrfehilmoyr"
结果应该是:"avabdcrfehavilmavoyr"
所以,我开发了这个功能:
def translate(text: String): String = {
var voyelle = Array('a', 'e', 'i', 'o', 'u')
for (w <- (0,text.length())){
if ((text.contains(voyelle[w]) == true)) {
text.patch(w, "av", 0)
}
}
}
有没有办法改用像地图、平面地图函数这样的函数式编程来简化代码?
字符串实际上是 char
的集合,因此您 can treat it like one。例如:
val result = text
.map(c => if (voyelle.contains(c)) "av" + c else c.toString)
.mkString
你可以直接使用flatMap
def translate(text: String): String = {
val vowels = Set('a', 'e', 'i', 'o', 'u')
text.trim.toLowerCase.flatMap { c =>
if (vowels.contains(c)) s"av${c}"
else c.toString
}
}
代码运行here.
怎么样
text.replaceAll("([aeiou])", "av")
我正在用 Scala 开发 translate
函数。它包括在类似元音的 'a' , 'e' , 'i', 'o' or 'u'
之前插入“av”字符。
请注意,文本字符串有长度限制。它的长度不应超过 225 个字符,如果它是空的,它应该 return 一个空字符串:
在另一个世界:
如果
text = "abdcrfehilmoyr"
结果应该是:"avabdcrfehavilmavoyr"
所以,我开发了这个功能:
def translate(text: String): String = {
var voyelle = Array('a', 'e', 'i', 'o', 'u')
for (w <- (0,text.length())){
if ((text.contains(voyelle[w]) == true)) {
text.patch(w, "av", 0)
}
}
}
有没有办法改用像地图、平面地图函数这样的函数式编程来简化代码?
字符串实际上是 char
的集合,因此您 can treat it like one。例如:
val result = text
.map(c => if (voyelle.contains(c)) "av" + c else c.toString)
.mkString
你可以直接使用flatMap
def translate(text: String): String = {
val vowels = Set('a', 'e', 'i', 'o', 'u')
text.trim.toLowerCase.flatMap { c =>
if (vowels.contains(c)) s"av${c}"
else c.toString
}
}
代码运行here.
怎么样
text.replaceAll("([aeiou])", "av")