scala convert Int => Seq [Int]到Seq [Int => INT]

时间:2017-05-18 06:28:22

标签: scala

是否有一种方便的方法来转换类型为Int =>的函数? Seq [Int]到Seq [Int =>在斯卡拉? 例如:

val f = (x: Int) => Seq(x * 2, x * 3)

我想将其转换为

val f = Seq((x: Int) => x * 2, (x: Int) => x * 3)

2 个答案:

答案 0 :(得分:5)

一般来说,这是不可能的。

例如,您有一个函数x => if (x < 0) Seq(x) else Seq(x * 2, x * 3)。您的假设函数将返回的Seq的大小是多少?

答案 1 :(得分:2)

正如@ZhekaKozlov指出的那样,集合将成为一个问题,因为无论集合的大小如何,集合都是相同的。

对于元组,另一方面,大小是类型的一部分,所以你可以做这样的事情。

val f1 = (x: Int) => (x * 2, x * 3)                 //f1: Int => (Int, Int)
val f2 = ((x:Int) => f1(x)._1, (y:Int) => f1(y)._2) //f2: (Int => Int, Int => Int)

不完全是“方便”的转换,但可行。