Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在scala中重构相似和重复的函数_Scala_Refactoring_Dry - Fatal编程技术网

如何在scala中重构相似和重复的函数

如何在scala中重构相似和重复的函数,scala,refactoring,dry,Scala,Refactoring,Dry,我在我的项目中的多个地方都有这样的代码: def fun1(paramA: A, url: String)(implicit x: X): Future[T] = { val select = x.someFunction(url) val res = anotherFunction(select, paramA).mapTo[T] res } def fun2(paramB: B, url: String)(implicit x: X): Future[T] = { val

我在我的项目中的多个地方都有这样的代码:

def fun1(paramA: A, url: String)(implicit x: X): Future[T] = {
  val select = x.someFunction(url)
  val res = anotherFunction(select, paramA).mapTo[T]
  res
}

def fun2(paramB: B, url: String)(implicit x: X): Future[T] = {
  val select = x.someFunction(url)
  val res = anotherFunction(select, paramB).mapTo[T]
  res
}

def fun3(paramC: C, url: String)(implicit x: X): Future[T] = {
  val select = x.someFunction(url)
  val res = anotherFunction(select, paramC).mapTo[T]
  res
}
我觉得它不是干的。此外,每当我需要更改某些内容时,我必须更新所有方法的代码


我最近开始使用Scala进行编码,之前我使用的是Ruby,它不是类型化语言。我不确定这是Scala中最好/正确的编写方式,或者我们可以重构它

您没有提供有关类型
X
t
的任何相关信息,但从示例代码来看,您可以这样做

def fun[P](param: P, url: String)(implicit x: X): Future[T] =
  anotherFunction(x.someFunction(url), param).mapTo[T]
这假设
someFunction()
在所有三个示例中都是相同的函数。(同样适用于
另一个函数()