Необязательный параметр в Partial Function? - PullRequest
0 голосов
/ 17 марта 2020

Моя команда разрабатывает своего рода «основной» проект, который используется несколькими другими нашими проектами. По этой причине мы не хотим резко менять сигнатуры некоторых методов.

Предположим, у нас есть такой метод:

override def calculateNextStep: PartialFunction[(Option[OrderType], Option[OrderState]), OrderType] = {
    case (Some(OrderTypeX), Some(InProgress))  => SomeOrderTypeA
    case (Some(OrderTypeY), Some(Done)) => SomeOrderTypeB
    case (None, None) => SomeOrderTypeC
}

Но теперь мне нужно переопределить этот метод в одном из "неосновные" проекты - мне нужно добавить один дополнительный параметр - скажем, parentOrder. Необходимо правильно рассчитать следующий шаг. Но я не хотел бы влиять на другие проекты. Было бы здорово добавить новый необязательный параметр (со значением по умолчанию None) и не влиять на другие проекты. Есть ли способ достичь этой цели?

1 Ответ

2 голосов
/ 17 марта 2020

Мы не можем изменить сигнатуру метода при переопределении. Попробуйте перегрузить вместо этого, как это

def calculateNextStep(a: Option[OrderType], b: Option[OrderState] c: Option[ParentOrder]): OrderType = 
  (a, b, c) match {
    case (Some(OrderTypeX), Some(InProgress), Some(aParentOrder)) => // do something
    case _ => calculateNextStep(a, b)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...