gpt4 book ai didi

scala - 我可以从 Scala 中的重载方法中获取函数吗?

转载 作者:行者123 更新时间:2023-12-04 10:11:01 29 4
gpt4 key购买 nike

假设我定义了两个具有相同名称和返回值但参数不同的方法:

def overload(x: Int) = x.toString
def overload(s: String) = s

现在我想将其中之一转换为函数。如果该方法没有重载,我会这样做:
val f = overload _

但既然是这样,编译器就会正确地提示引用不明确。除了重命名其中一个方法之外,还有什么方法可以使一个或另一个重载方法的函数起作用?

谢谢!

约翰

最佳答案

编译器知道哪个 overload 的方式当你直接调用它时调用它是通过知道它所应用的参数的类型。 overload someInt只能指overload(x: Int) ,所以没有歧义。

当你用它创建一个函数时,你还没有提供参数(还没有),所以编译器不知道你想要你的函数是什么类型,所以它不知道是哪个 overload你指的是。

解决这个问题的简单方法是明确告诉它类型:

val f : Int => String = overload _

或者:
val f = (x : Int => overload x)

或者:
val f = overload (_ : Int)

(注意:我还没有测试过这些,但它们的一些变化应该可以工作)

关于scala - 我可以从 Scala 中的重载方法中获取函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816547/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com