【发布时间】:2015-01-24 14:25:23
【问题描述】:
给定一个 Tuple3,例如("one", "two", "three")我要获取tuple2,它只包含前两个元素("one", "two")。
一种方法是这样的:
val (one, two, _) = ("one", "two", "three")
val result = (one, two)
但是如果我想做类似的事情从 tuple16 获取 tuple14 呢?样板。
更新:
更具体的用例(func2 和 func3 不能更改)。
def func3(one: String, two: String, three: String) = println("Do something")
def func2(one: String, two: String) = println("Do something 2")
val originalTuple = ("one", "two", "three")
val newTuple = ???
(func3 _).tupled(originalTuple)
(func2 _).tupled(newTuple)
【问题讨论】:
-
不使用元组?将元组视为(某种)索引序列永远不会很好地工作(尽管 shapeless 会尽力提供帮助)
-
不幸的是,这个元组是我无法更改的函数的参数列表。根据stackoverflow.com/questions/14722860/… 列表无法转换为元组。而且我不知道将参数列表传递给函数的方法。
-
" 而且我不知道将参数列表传递给函数的方法" 请进一步解释您的意思(也许在另一个问题中)。有可能。
-
它有一个答案:)