Невозможно применить параметризованную функцию карри - PullRequest
2 голосов
/ 09 июня 2019

У меня есть функция, которая имеет следующее определение:

def expectMsgPF[T](max: Duration = Duration.Undefined, hint: String = "")(f: PartialFunction[Any, T]): T = {

Когда я вызываю ее следующим образом:

val res1 = listener1.expectMsgPF(1.second) 

Является ли res1 функцией?

Я хотел бы написать следующее:

 val res1 = listener1.expectMsgPF(1.second) _
 val res2 = listener2.expectMsgPF(1.second)
 Then("it should contain `Kafka and SAP are offline`")
 res1 {
    case status: ServerStatus =>
    status.health should be(ServersOffline)
  } 

Но это не работает.

1 Ответ

3 голосов
/ 09 июня 2019

Чтобы заставить res1 { case status: ServerStatus => status.health should be(ServersOffline) } работать, попробуйте помочь компилятору, предоставив параметр типа T в expectMsgPF[T] примерно так

val res1 = listener1.expectMsgPF[Assertion](1.second) _

Это действительно делает res1 функцией типа

PartialFunction[Any, Assertion] => Assertion
...