给定函数类型别名:
type Func = (Int, Double) => String
我想定义一个这样的函数,其中一种方法是
val foo: Func = (n: Int, d: Double) => n.toString + " " + d.toString
但是我试图理解是否存在类似于访问元组的冗长方式,而不知道类型已知时再次明确命名参数,例如(假设)
val foo: Func = _1.toString + " " + _2.toString
有什么可以实现的吗?它可以节省大量的输入,并使我的代码更具可读性。
答案 0 :(得分:1)
是的。
val foo: Func = _.toString + " " + _.toString
你必须意识到论据n
和d
并不构成Tuple
,而是独立的。要成为元组,类型应该是((Int, Double)) => String
,请注意附加的括号。
答案 1 :(得分:1)
您始终可以使用普通的简写符号,按顺序迭代参数:
val foo: Func = _ + " " + _
如果这不够通用,您只需要命名参数,而不是再次提供它们的类型:
val foo: Func = (x,y) => (x + (x + y*y)).toString