Scala 为什么我会得到;java.lang.OutOfMemoryError:超出GC开销限制;在这里

Scala 为什么我会得到;java.lang.OutOfMemoryError:超出GC开销限制;在这里,scala,garbage-collection,out-of-memory,Scala,Garbage Collection,Out Of Memory,我想快速编写一个脚本,简单地将一个核苷酸序列(类似“ATGAAC…”的字符串)拆分成一个三元组列表,也就是密码子(字符串:“ATG”、“AAG”、“AAC”…)来做其他事情 这一行代码有什么问题,为什么会出现“java.lang.OutOfMemoryError:超出GC开销限制” 我不是问那是什么,而是问我为什么会得到它以及如何避免。 顺便说一句,我知道这会给我相反的顺序,但我不知道如何避免scala认为字符串本身就是一个集合。i、 e.这: scala> List.empty ++ "

我想快速编写一个脚本,简单地将一个核苷酸序列(类似“ATGAAC…”的字符串)拆分成一个三元组列表,也就是密码子(字符串:“ATG”、“AAG”、“AAC”…)来做其他事情

这一行代码有什么问题,为什么会出现“java.lang.OutOfMemoryError:超出GC开销限制”

我不是问那是什么,而是问我为什么会得到它以及如何避免。 顺便说一句,我知道这会给我相反的顺序,但我不知道如何避免scala认为字符串本身就是一个集合。i、 e.这:

scala> List.empty ++ "hello"
res6: List[Char] = List(h, e, l, l, o)

你什么时候停
drop
不会仅仅因为没有其他内容可以删除而终止递归。还有,你还回什么?你从来不说。你需要像这样做

= if (s.length==0) accu else tripletize(s.drop(3), s.take(3) :: accu)

你什么时候停
drop
不会仅仅因为没有其他内容可以删除而终止递归。还有,你还回什么?你从来不说。你需要像这样做

= if (s.length==0) accu else tripletize(s.drop(3), s.take(3) :: accu)

小提示:
s.length==0
等于
s.isEmpty
@sschaef-确实如此。我忘记了
isEmpty
是在
String
上定义的,而不仅仅是Scala集合。小提示:
s.length==0
等于
s.isEmpty
@sschaef-确实如此。我忘了
isEmpty
是在
String
上定义的,而不仅仅是Scala集合。您可以这样做:
s.grouped(3)。toList
您可以这样做:
s.grouped(3)。toList