繁体   English   中英

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

[英]How to define value of function type alias without repeating the types?

给定函数类型别名:

type Func = (Int, Double) => String

我想定义一个这样的功能,一种方法是

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

但是我试图理解是否有一种类似于访问元组的更简单的方法,而不必在已知类型时再次明确命名参数,例如(假设)

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

有什么可以实现这一目标的吗? 这将节省大量的输入时间,并使我的代码更具可读性。

是的。

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

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

您始终可以使用普通的速记符号来依次遍历参数:

val foo: Func = _ + " " + _

如果这还不够通用,则只需命名参数,而无需再次提供其类型:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM