Scala:在字符串列表中的每个字符之后添加字符

Scala:在字符串列表中的每个字符之后添加字符,scala,list,foreach,Scala,List,Foreach,我有一个任务,我在使用Scala完成时遇到了一些困难。我必须定义一个函数,该函数返回从作为参数接收的列表构造的字符串列表。对于元素中的每个字母,将添加下一个字符: transformStrings(List("CHAT", "LIST", "ASK")) //> res13: List[String] = List(CDHIABTU, LMIJSTT, ABSTKL) 到目前为止,我想我必须以某种方式映射列表,然后使用foreach或for/yield来遍历每个字符,但我不确定具体如何操

我有一个任务,我在使用Scala完成时遇到了一些困难。我必须定义一个函数,该函数返回从作为参数接收的列表构造的字符串列表。对于元素中的每个字母,将添加下一个字符:

transformStrings(List("CHAT", "LIST", "ASK"))
//> res13: List[String] = List(CDHIABTU, LMIJSTT, ABSTKL)
到目前为止,我想我必须以某种方式映射列表,然后使用foreach或for/yield来遍历每个字符,但我不确定具体如何操作。

您可以:

List("CHAT", "LIST", "ASK").map(s => s.flatMap(c => c.toString + (c+1).toChar))
// res9: List[String] = List(CDHIABTU, LMIJSTTU, ABSTKL)
或:

你可以做:

List("CHAT", "LIST", "ASK").map(s => s.flatMap(c => c.toString + (c+1).toChar))
// res9: List[String] = List(CDHIABTU, LMIJSTTU, ABSTKL)
或:

foldLeft怎么样,比如:

解释:

a是还原值 b是Stringlike聊天中的下一个字符 b+1表示下一个字符ascii数 toChar将ascii数字转换为字符 最后将b和下一个char连接到String foldLeft怎么样,比如:

解释:

a是还原值 b是Stringlike聊天中的下一个字符 b+1表示下一个字符ascii数 toChar将ascii数字转换为字符 最后将b和下一个char连接到String
你能向Scala新手解释一下b+1部分的功能吗?这就是角色增量发生的地方吗?如果是这样的话,这不是一个很奇怪的构造吗?谢谢@patrick每个字符都由一个数字表示,因为它是一个ASCII值-例如,在Scala REPL中,尝试输入“C”。toInt+1.toChar,您将看到得到D,它的整数表示形式正好比C的值大一个。哇,这是野生的,谢谢!我看了看,想知道这是否适用于所有Unicode字符?我觉得它不能为这些返回Int?不适合我,但可能是我的终端设置扫描你向Scala新手解释b+1部分的功能?这就是角色增量发生的地方吗?如果是这样的话,这不是一个很奇怪的构造吗?谢谢@patrick每个字符都由一个数字表示,因为它是一个ASCII值-例如,在Scala REPL中,尝试输入“C”。toInt+1.toChar,您将看到得到D,它的整数表示形式正好比C的值大一个。哇,这是野生的,谢谢!我看了看,想知道这是否适用于所有Unicode字符?我觉得它不能为这些返回Int?不适用于我,但可能是我的终端设置z或z之后的是什么?按ASCII值,它应该分别是{和[你需要它环绕吗?z或z后面是什么?按ASCII值,它应该分别是{和[你需要它环绕吗?
List("CHAT", "LIST", "ASK").map(_.foldLeft("")((a, b) => a + b + (b + 1).toChar))
>res0: List[String] = List(CDHIABTU, LMIJSTTU, ABSTKL)