我正在尝试编写一个包含forward
或backward
的包装函数,因为逻辑是相同的,我想坚持DRY。
本质上,我想要一个使用forward
或backward
作为内部应用函数的通用函数。但是,forward
和backward
都已重载:
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
可以是forward
或backward
。这可能/可行吗?
当我在f
的参数类型中尝试存在类型时,编译器显然不知道将返回什么类型,因此它选择Any
。我不太热衷于使用布尔参数isForward
并基于此进行切换,因为我最终仍然会复制相当多的代码。