是否有一种方便的方法来转换类型为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)
答案 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)
不完全是“方便”的转换,但可行。