这个程序的想法是读取行并取出所有元音并用" @"替换它们。字符。输入将在用户输入" - 退出 - "它将返回那些应用了函数的行。我无法弄清楚我所包含的函数部分的语法是什么" lst.map(" aeiouAEIOU" =>' @& #39)" 。我想我错过了什么。
import scala.io.StdIn._
def readList: List[String] = {
val n = readLine
if (n == "--quit--") {
return Nil
} else {
return n::readList
}
}
def vowelsToAt(lst: List[String]): List[String] = {
lst.map("aeiouAEIOU" => '@')
}
val wordList = readList
println(vowelsToAt(wordList).mkString("\n"))
答案 0 :(得分:1)
您可以使用
而不是'
lst.map("aeiouAEIOU" => '@')
内部lst.map(_.map(c => if ("aeiouAEIOU" contains c) '@' else c))
通过用map
替换元音来转换字符串char-by-char,而外部@
将此转换应用于列表的每个元素。
您的表达式map
无效,左侧必须是任意字符(您的lambda的参数),而不是包含要映射的字符的字符串。另一种与您的方法类似的可能性(但有点复杂):
"aeiouAEIOU" => '@'
一方面注意:在方法list.map(_.map {
case 'a' | 'e' | 'i' | 'o' | 'u' | 'A' | 'E' | 'I' | 'O' | 'U' => '@'
case c => c
})
中,您不必使用readList
,因为最后一个语句也被解释为返回值。