Можно ли использовать scala splat для чего-либо, кроме varargs?

, например:

scala> def pipes(strings:String*) = strings.toList.mkString("|")

, который я могу вызвать обычным образом:

scala> pipes("foo", "bar")
res1: String = foo|bar

или со splat:

scala> val args = List("a","b","c")
scala> pipes(args:_*)
res2: String = a|b|c

Но могу ли я использовать знак, чтобы предоставить аргументы для чего-либо, кроме параметра varargs? например, я хотел бы сделать что-то вроде:

scala> def pipeItAfterIncrementing(i:Int, s:String) = (i + 1) + "|" + s
scala> val args:Tuple2[Int, String] = (1, "two")
scala> pipeItAfterIncrementing(args:_*)

Это не работает, но есть ли способ добиться того же эффекта, предоставляя несколько аргументов от одного объекта, будь то кортеж или что-то еще? Есть ли причина, по которой это нельзя реализовать для кортежей, учитывая, что их длина и типы известны во время компиляции?

14
задан gfxmonk 13 April 2011 в 12:44
поделиться