Scala中重载函数的通用参数

时间:2017-08-21 11:42:45

标签: scala

我正在尝试编写一个包含forwardbackward的包装函数,因为逻辑是相同的,我想坚持DRY。

本质上,我想要一个使用forwardbackward作为内部应用函数的通用函数。但是,forwardbackward都已重载:

def forward(String, String): String
def forward(Int, String): Int

def backward(String, String): String
def backward(Int, String): Int

在我的功能中,我想使用这样的东西:

def move[T](f: (T, String) => T, ...) = ???

forward内使用backward(或move)的两个版本。有没有办法将forward(或backward)传递给move,同时保留重载功能?

简化:move返回( f("text"), f(123) )f可以是forwardbackward。这可能/可行吗?

当我在f的参数类型中尝试存在类型时,编译器显然不知道将返回什么类型,因此它选择Any。我不太热衷于使用布尔参数isForward并基于此进行切换,因为我最终仍然会复制相当多的代码。

0 个答案:

没有答案