我想破解一个快速脚本,它简单地将一个核苷酸序列(一个像“ATGAAGAAC...”这样的字符串)拆分成一个三元组列表,也就是密码子(字符串:“ATG”、“AAG”、“AAC”......)做其他事情。
这个单线有什么问题,为什么我会收到“java.lang.OutOfMemoryError: GC overhead limit exceeded”?
def tripletize(s:String, accu:List[String] = List.empty[String]):List[String] = tripletize(s.drop(3), s.take(3) :: accu)
我不是在问那是什么,而是我为什么得到它以及如何避免。顺便说一句,我知道这会给我相反的顺序,但我不知道如何避免 scala 将 String 视为一个集合本身。即:
scala> List.empty ++ "hello"
res6: List[Char] = List(h, e, l, l, o)