我需要将元音转换为" @"斯卡拉的象征

时间:2017-12-04 22:38:05

标签: scala

这个程序的想法是读取行并取出所有元音并用" @"替换它们。字符。输入将在用户输入" - 退出 - "它将返回那些应用了函数的行。我无法弄清楚我所包含的函数部分的语法是什么" 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"))

1 个答案:

答案 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,因为最后一个语句也被解释为返回值。