如何在不重复类型的情况下定义函数类型别名的值?

时间:2015-01-10 23:23:13

标签: scala

给定函数类型别名:

type Func = (Int, Double) => String

我想定义一个这样的函数,其中一种方法是

val foo: Func = (n: Int, d: Double) => n.toString + " " + d.toString

但是我试图理解是否存在类似于访问元组的冗长方式,而不知道类型已知时再次明确命名参数,例如(假设)

val foo: Func = _1.toString + " " + _2.toString

有什么可以实现的吗?它可以节省大量的输入,并使我的代码更具可读性。

2 个答案:

答案 0 :(得分:1)

是的。

val foo: Func = _.toString + " " + _.toString 

你必须意识到论据nd并不构成Tuple,而是独立的。要成为元组,类型应该是((Int, Double)) => String,请注意附加的括号。

答案 1 :(得分:1)

您始终可以使用普通的简写符号,按顺序迭代参数:

val foo: Func = _ + " " + _

如果这不够通用,您只需要命名参数,而不是再次提供它们的类型:

val foo: Func = (x,y) => (x + (x + y*y)).toString