Ошибка перегруженного конструктора - PullRequest
1 голос
/ 29 июня 2010

У меня есть следующий класс:

class Step(kind:TipoStep.Value,
           message:String = "",
           study:List[Formula] = List(),
           lastAdd:Set[Formula] = Set(),
           lastDel:Set[Formula] = Set(),
           add:List[Formula] = List(),
           del:List[Formula] = List()
           ) {

  def this(step:Step,
           kind:TipoStep.Value,
           message:String = "",
           study:List[Formula] = List(),
           lastAdd:Set[Formula] = Set(),
           lastDel:Set[Formula] = Set()) = this(kind, message, study, lastAdd, lastDel, step.getAllAdd, step.getAllDel)

 /* ... */
}

Компилятор показывает мне следующую ошибку:

error: ambiguous reference to overloaded definition,
both method init$default$5 in object Step of type => scala.collection.mutable.Set[org.lorea.pltl.formula.Formula]
and  method init$default$5 in object Step of type => scala.collection.mutable.Set[org.lorea.pltl.formula.Formula]
match expected type scala.collection.mutable.Set[org.lorea.pltl.formula.Formula]
step = new Step(TipoStep.R_fixpoint, s, List(c1, c2), news)

1 Ответ

3 голосов
/ 29 июня 2010

Наличие нескольких формальных параметров одинакового типа и использование значений по умолчанию в первичном конструкторе делает его неоднозначным, какой параметр формального конструктора должен быть установлен по умолчанию, а какой назначен фактический параметр.

Один способразрешить это - использовать присвоения именованных параметров в вызове конструктора.

...