Scala 中的列表没有得到更新
List in scala not getting updated
我是 Scala Collections 的新手,目前我想将给定的字符串列表分成两个列表的元组 (List[String], List[String])
,其中包含回文字符串列表和输入字符串的其余部分。
例如,
如果输入是 List("racecar", "abcd", "lilil", "effg")
输出应该是 (List("racecar", "lilil"), List("abcd", "effg"))
我有一个使用过滤器的解决方案。但是,目前,我正在尝试使用 foldLeft 改进我的解决方案。我的新做法如下:
def stringTuples2(strings: List[String]): (List[String], List[String]) = {
strings.foldLeft((List[String](), List[String]()))((b, a) => {
if (a.equals(a.reverse)) { b._1 :+ a; b }
else { b._2 :+ a; b }
})}
我不确定我做错了什么,但是这个解决方案的输出是两个空列表的元组,即 (List(), List())。
感谢您的帮助。谢谢!
您尝试修改 b
会创建一个新的 List
,然后您将新的 List
丢弃,而 return b
将保持不变。取出 ;b
部分和 return 更新后的元组:(b._1 :+ a, b._2)
或 (b._1, b._2 :+ a)
顺便说一句,这里有一个不同的解决方法。
List("racecar", "abcd", "lilil", "effg").partition(s => s == s.reverse)
我是 Scala Collections 的新手,目前我想将给定的字符串列表分成两个列表的元组 (List[String], List[String])
,其中包含回文字符串列表和输入字符串的其余部分。
例如,
如果输入是 List("racecar", "abcd", "lilil", "effg")
输出应该是 (List("racecar", "lilil"), List("abcd", "effg"))
我有一个使用过滤器的解决方案。但是,目前,我正在尝试使用 foldLeft 改进我的解决方案。我的新做法如下:
def stringTuples2(strings: List[String]): (List[String], List[String]) = {
strings.foldLeft((List[String](), List[String]()))((b, a) => {
if (a.equals(a.reverse)) { b._1 :+ a; b }
else { b._2 :+ a; b }
})}
我不确定我做错了什么,但是这个解决方案的输出是两个空列表的元组,即 (List(), List())。
感谢您的帮助。谢谢!
您尝试修改 b
会创建一个新的 List
,然后您将新的 List
丢弃,而 return b
将保持不变。取出 ;b
部分和 return 更新后的元组:(b._1 :+ a, b._2)
或 (b._1, b._2 :+ a)
顺便说一句,这里有一个不同的解决方法。
List("racecar", "abcd", "lilil", "effg").partition(s => s == s.reverse)