gpt4 book ai didi

scala - 为什么偏应用需要指定参数类型?

转载 作者:行者123 更新时间:2023-12-02 09:28:45 26 4
gpt4 key购买 nike

为什么 Scala 中的部分函数应用需要提供类型,如下所示:

def func(a: Int, b: Int) = ???

def func1 = func(_ : Int, 1) // compiles fine

def func1x = func(_, 1) // does not compile
// error: missing parameter type for expanded function ((x$2) => func(x$2, 1))

为什么在这种情况下没有推断出类型?推断类型会导致语法复杂或不明确,或者类型可能不像我看起来那么清晰?

最佳答案

从编译错误中您可以看到 func(_, 1) 扩展为 x => func(x, 1)。如果您首先编写 def f = x => func(x, 1),则无法保证 xIntSLS 6.23.1不幸的是,当没有明确给出类型归属时,没有提及如何填写类型归属。

List(1, 2, 3).map(_ + 1) 有效,因为 map 需要一个 Int => Int 参数。 def func1x = func(_, 1) 不起作用,因为 func1x 的类型是从右侧推断出来的,但技术上也不知道。只有推断 x: Int => f(x, 1) 才有意义,但我猜这会增加编译器必须处理占位符语法的极端情况的另一个不必要的复杂性关于方法参数。

关于scala - 为什么偏应用需要指定参数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324140/

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