名单上的scala maxBy问题

名单上的scala maxBy问题,scala,Scala,使用scalac 2.10.0编译对我来说很好,解决这个问题的最佳方法是什么maxBy是在Scala 2.9.0中添加的。确保您使用的是scalac 2.9.0+来编译代码。使用scalac 2.10.0对我来说很好maxBy是在Scala 2.9.0中添加的。确保您使用的是scalac 2.9.0+来编译代码。作为旁注,您可以将代码折叠成单个的(i1)您能完成代码吗,这类似于for(i1在一个中使用多个生成器用于-理解相当于将每个生成器嵌套在自己的理解中;用于(a…),因此可以消除两级缩进。至

使用scalac 2.10.0编译对我来说很好,解决这个问题的最佳方法是什么
maxBy
是在Scala 2.9.0中添加的。确保您使用的是scalac 2.9.0+来编译代码。

使用scalac 2.10.0对我来说很好
maxBy
是在Scala 2.9.0中添加的。确保您使用的是scalac 2.9.0+来编译代码。

作为旁注,您可以将代码折叠成单个的
(i1)您能完成代码吗,这类似于
for(i1在一个
中使用多个生成器用于
-理解相当于将每个生成器嵌套在自己的理解中;
用于(a…)
,因此可以消除两级缩进。至于
max
,请尝试在repl中输入
列表((1,2)、(2,1))。max
-您将得到
(2,1)
。作为旁注,你可以将你的代码折叠成一个单独的
for(i1你能完成代码吗,这类似于
for(i1在一个
for
中使用多个生成器)-理解相当于将每个生成器嵌套在自己的理解中;
for(a…)
,因此您可以消除两级缩进。至于
max
,请尝试在repl中输入
列表((1,2)、(2,1))。max
-您将得到
(2,1)
val dna1 = "ATATCCG"
val dna2 = "TCCGA"
val dna3 = "ATGTACTG"
val arr = Array.ofDim[(Int, (Int, Int, Int))](dna1.length + 1, dna2.length + 1, dna3.length + 1)

for (i1 <- 0 to dna1.length)
  for (i2 <- 0 to dna2.length)
    for (i3 <- 0 to dna3.length)
      arr(i1)(i2)(i3) = {
        def mkPair(i1: Int, i2: Int, i3: Int, diff: Int = 0) = {
          (arr(i1)(i2)(i3)._1 + diff, (i1, i2, i3))
        }
        if (i1 + i2 + i3 == 0) (0, null)
        else if (i1 * i2 * i3 == 0) (0, (0 max (i1 - 1), 0 max (i2 - 1), 0 max (i3 - 1)))
        else List(
          mkPair(i1 - 1, i2 - 1, i3 - 1, if (dna1(i1 - 1) == dna2(i2 - 1) && dna1(i1 - 1) == dna3(i3 - 1)) 1 else 0),
          mkPair(i1, i2 - 1, i3 - 1),
          mkPair(i1 - 1, i2, i3 - 1),
          mkPair(i1 - 1, i2 - 1, i3),
          mkPair(i1 - 1, i2, i3),
          mkPair(i1, i2 - 1, i3),
          mkPair(i1, i2, i3 - 1)
        ).maxBy(_._1)
      }
error: value maxBy is not a member of List[(Int, (Int, Int, Int))]
possible cause: maybe a semicolon is missing before `value maxBy'?
               ).maxBy(_._1)
                 ^