我正在做一些exercism.io练习。目前我正在研究的是Scala练习。下面是我的代码和我收到的错误:
作为参考,DNA是用一串字符串实例化的。这个DNA可以调用计数(计算所传递的单核苷酸的链数)和nucletideCounts,它计数该链中每个核苷酸的所有出现情况,并返回一个Map[Char,Int]
。
class DNA(strand:String) {
def count(nucleotide:Char): Int = {
strand.count(_ == nucleotide)
}
def nucleotideCounts = (
for {
n <- strand
c <- count(n)
} yield (n, c)
).toMap
}
我所收到的错误如下:
错误:(10,17)值映射不是Int c <- count(n) ^的成员 错误:(12,5)不能证明Char <:< (T,U)。).toMap ^ 错误:(12,5)方法toMap:(隐式ev:<:
我对Scala非常陌生,因此,对于这些错误发生的原因以及修复它们的建议,我们将不胜感激。
发布于 2015-06-10 22:35:59
根据Akos的方法,考虑给定链(String
)的并行遍历,
strand.distinct.par.map( n => n -> count(n) )
在这里,我们使用distinct来收集唯一的项,并在map
中构造每个map
关联。
发布于 2015-06-10 09:07:23
管道解决方案如下所示:
def nucleotideCounts() = strand.groupBy(identity).mapValues(_.length)
发布于 2019-08-16 13:36:41
另一种方法是
Map() ++ {for (n <- strand; c = count(n)) yield n->c}
不知道为什么它与{.}.toMap()不同,但是它完成了任务!
另一种方法是
Map() ++ {for (n <- strand; c <- Seq(count(n))) yield n->c}
https://stackoverflow.com/questions/30762741
复制相似问题