Scala: Auspacken Tupel als Teil der Argumentliste
Ich versuche zu senden, das Ergebnis einer Methode rufen Sie die Tupel, wie Teil der argument-Liste für eine andere Methode.
Ziel Methode
def printResult(title: String, result: Int, startTime: Long, endTime: Long)
Rückkehr aus der Methode, partielle argument-Liste
def sendAndReceive(send: Array[Byte]): (Int, Long, Long)
In anderen Worten, ich bin versucht zu rufen printResult(String, (Int, Long, Long))
. Wenn die Methode zurückgeben Signatur entspricht der Methode nennen, dann hätte ich
(printResult _).tupled(sendAndReceive(heartbeat))
Diese Ergebnisse in der syntax-Fehler
printresult("Hi", Function.tupled(sendAndReceive(heartbeat))
Abhilfe
Ich bin Rückgriff auf manuell Auspacken des Tupels, dann verwenden Sie beim Aufruf der Methode
val tuple = sendAndReceive(heartbeat)
printResult("Heartbeat only", tuple._1, tuple._2, tuple._3)
Gibt es eine elegantere Art und Weise zu entpacken und zu senden, der ein Tupel als Teil der argument-Liste?
Referenzen
Scala: ZERLEGUNG Tupel in der Funktion Argumente
Aufrufen einer Methode, mit der ein Tupel als parameter Liste
Wird tuple unpacking werden direkt unterstützt, in parameter-Listen in Scala?
Tupel Entpacken in den Map-Operationen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Folgendes tun:
invokeMethod(arg1, arg2, tuple)
Sind Sie im Anhang zu dieser Funktion Unterschrift?
Wenn es dein code und Sie können es ändern, dann können Sie versuchen, und verwenden Sie currying statt so:
Dann führen Sie es wie folgt:
Ein Ansatz besteht in der case-Klassen für Tupel beispielsweise wie folgt aus,
Dies kann tatsächlich erreicht werden, ohne dass das Auspacken des Tupels mit formlose (und tupling die Funktion, wie Sie es getan haben):
"Hi" +: sendAndReceive(???)
gerade bestimmt den Wert"Hi"
auf die Tupel zurückgegebensendAndReceive
.