scala - if / else в цикле for - PullRequest
0 голосов
/ 03 июля 2018

Если я использую два для таких циклов, я получаю List [List [Int]], но как я могу получить List [Int]? Я не знаю, как написать оператор if / else только в одном цикле for, может кто-нибудь мне помочь?

def example:  (List[(Int, Int)], Int,Int) => List[Int] ={
    (list, p, counter) => 
    if (counter >=0)
        for(x<-list(i._1); if ( x._1 ==p))yield x._2
        for(x<-list(i._1); if ( x._1 !=p))yield example((x._1,x._2+i._2):: Nil,p,counter-1)
    else { ....}
}

1 Ответ

0 голосов
/ 03 июля 2018

Во-первых, как написано, код, который вы разместили, даже не является допустимым определением. Если у вас есть что-то, что работает, но возвращает тип, отличный от желаемого, опубликуйте этот рабочий код.

При этом, если у вас есть List[List[Int]] и вы хотите List[Int], метод для этого будет flatten

Использование:

scala> val nestedList = List(List(1, 2), List(3, 4), List(5, 6))
nestedList: List[List[Int]] = List(List(1, 2), List(3, 4), List(5, 6))

scala> val flattenedList = nestedList.flatten
flattenedList: List[Int] = List(1, 2, 3, 4, 5, 6)
...