отсутствует тип параметра scala - PullRequest
0 голосов
/ 21 апреля 2020

Я набрал следующее в scala:

def count(e: Int, list: List[Int]): Int = 
   list.foldLeft(e)((sum) => list match {
     case x::xs if e == x => sum = sum + 1
     case Nil             => sum
   })

Почему я получаю сообщение об ошибке во второй строке "отсутствует тип параметра"?

1 Ответ

2 голосов
/ 21 апреля 2020

Попробуйте:

 val r = List(1,2,3,4,3,3,3,3,3,3,4,4,5)
  def newCount(e: Int, list: List[Int]) = {
    list.foldLeft(0)((sum: Int, b: Int) =>{
      if(b==e)
        sum+1
      else sum
    }
    )
  }

  println(newCount(3, r)) // 7

, поэтому проблема с вашим кодом заключается в том, что вы используете foldLeft, а второй параметр вашей анонимной функции не указан. Следовательно, вы получаете отсутствующий параметр типа для функции, которую вы определили.

В своем коде вы пытаетесь использовать сумму в качестве накопителя, поэтому вам не нужно писать sum = sum + 1, вы можете просто написать sum + 1 но самое главное, вы не используете правильный левый сгиб.

подпись для foldLeft взята из документации здесь

def foldLeft[B](z: B)(op: (B, A) => B): B

где z - начальное значение и функция op, которая работает (аккумулятор типа B, A переменная типа A) и возврат B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...