Scala: Déballage de tuple dans le cadre de la liste d'arguments

J'essaie d'envoyer le résultat d'un appel de la méthode n-uplet, comme partie de la liste d'argument pour une autre méthode.

Cible méthode

def printResult(title: String, result: Int, startTime: Long, endTime: Long)

Retour à partir de la méthode partielle de la liste d'arguments

def sendAndReceive(send: Array[Byte]): (Int, Long, Long)

En d'autres termes, je suis en train d'appel printResult(String, (Int, Long, Long)). Si la méthode renvoie la signature correspond à l'appel de la méthode, ensuite, je pourrais avoir utilisé

(printResult _).tupled(sendAndReceive(heartbeat))

Il en résulte une erreur de syntaxe

printresult("Hi", Function.tupled(sendAndReceive(heartbeat))

Solution de contournement

Je suis recourir manuellement le déballage de la n-uplet, puis de l'utiliser lors de l'appel de la méthode

val tuple = sendAndReceive(heartbeat)
printResult("Heartbeat only", tuple._1, tuple._2, tuple._3)

Est-il un moyen plus élégant de les déballer et de les envoyer à un tuple dans le cadre de la liste d'arguments?

Références

Scala: la Décomposition de n-uplets dans les arguments de la fonction

Appeler une méthode à l'aide d'un tuple comme la liste des paramètres

Va tuple déballage être directement pris en charge dans des listes de paramètres dans Scala?

Tuple Déballage de la Carte, à des Opérations de

OriginalL'auteur Hanxue | 2014-06-13