【发布时间】:2015-10-05 07:35:15
【问题描述】:
在 GoLang 中,如果一个函数接受多个相同类型的参数,您可以将其键入为:
add := func(x, y int) int {
return x + y
}
其中x 和y 都是int 类型。
但我无法确定 scala 是否存在这样的速记符号。我已经尝试过,但无济于事。
> def add(x, y: Int): Int = { x + y}
error: ':' expected but ',' found.
对于像这样的简单案例,这不是什么负担。但是对于我提出的一些案例类,这看起来非常冗长,与 scala 对冗长的立场相冲突。
是否有这样的 scala 功能或语法糖,如果有我该如何使用它?
【问题讨论】:
-
不,scala 中没有这样的符号。但我有时会为 Int、String 等使用较短的类型别名
type I = Int来缩短长签名,例如在为 JSON 或数据库库定义许多案例类时。 -
我认为这样的符号在 Scala 中会有很多问题,特别是对于 lambda,由于类型推断,您不必总是指定变量的类型。
-
就像@dmitry 已经提到的那样,没有这样的功能。一种解决方法可能是使用 List[Int] 来传递数据。但同样,它具有巨大的滥用潜力。
-
@dmitry 好吧,我认为这是一个答案。关于类型别名的好点,从没想过。
-
@Archeg 为什么会这样?你的意思是,例如,一个论点的类型是推断出来的,而另一个不是,从而导致歧义?这可能吗?
标签: scala