我有以下代码:
def a = f(aa)
def b = f(bb)
def c = f(cc)
def d = f(dd)
是否有移除样板的解决方案,即显式调用f
答案 0 :(得分:6)
您可以使用标准库执行类似的操作:
val List(a,b,c,d) = List(aa,bb,cc,dd).map(f)
它使用模式匹配来分配左侧的值,如果两个List
的长度不同,则会在运行时失败。
Scalaz有一个更安全的类型选项,它使用元组来确保左边和右边的值的数量相同(在编译时检查):
import scalaz._, Scalaz._
val (a,b,c,d) = (aa,bb,cc,dd).map(f)
答案 1 :(得分:1)
您可以使用隐式: http://docs.scala-lang.org/overviews/core/implicit-classes.html
val aa: Int = 1
// Let's say that your function f returns instance of C
def f(x: Int): C = ???
implicit class C(in: Int) {
// Do whatever you need here ...
}
def a: C = aa