настраиваемые целые числа - PullRequest
0 голосов
/ 02 мая 2018

Я написал следующую функцию, основанную на сопоставлении с образцом:

def replacingElem(lines: List[String], last10: String): List[String] = 
{
  if (lines.isEmpty) Nil else {
    val row = lines.head.split("[ \t]+")
    row(0).toInt match {
      case 10 => lines.head :: replacingElem(lines.tail, row(1))
      case 15 => (row(0) + " " + last10 + " " + row(2) + " " + row(3)) :: replacingElem(lines.tail, last10)
      case _ => lines.head :: replacingElem(lines.tail, last10)
    }
  }
}

Моя цель сделать настраиваемые целые числа 10 и 15 и сделать их аргументами функции. Я сделал следующие модификации:

def replaceIndex(lines: List[String], last10: String,a:Int,b:Int): List[String] = {
  if (lines.isEmpty) Nil else {
    val row = lines.head.split("[ \t]+")
    row(0).toInt match {
      case a => lines.head :: replaceIndex(lines.tail, row(1),a,b)
      case b => (row(0) + " " + last10 + " " + row(2) + " " + row(3)) :: replaceIndex(lines.tail, last10,a,b)
      case _ => lines.head :: replaceIndex(lines.tail, last10,a,b)
    }
  }
}

Но я получил ошибки компиляции.

1 Ответ

0 голосов
/ 02 мая 2018

Резервные тики ...

case `a` => ...
case `b` => ...

... сообщает компилятору: «Не создавайте здесь новые переменные, используйте значения в этих существующих переменных».

Другой вариант - начинать имя переменной с заглавной буквы.

def replaceIndex(lines:List[String], last10:String, A:Int, B:Int):List[String]=...

Но я предпочитаю решение с обратным ходом.

...