gpt4 book ai didi

将参数化方法强制转换为函数时,Scala 有奇怪的类型吗?

转载 作者:行者123 更新时间:2023-12-05 08:20:04 27 4
gpt4 key购买 nike

不可能读取 REPL 返回的以下类型

def  returnfuncdefGen[A] = (i: A) => i.toString.length

returnfuncdefGen: [A]=> A => Int

虽然我明白这一点

def  returnfuncdefGen[A](i: A) = i.toString.length

returnfuncdefGen: [A](i: A)Int

第一个版本是 FP 简化(scala)的作者调用将参数化方法强制转换为函数

How exactly does one read this [A]=> A => Int ?

我还发现强制转换的概念有点奇怪。在我看来,这就像创建一个返回函数的无括号方法。现在上面的泛型我无法通过说文字​​函数关闭方法定义的类型来解释其他。

总的来说,如果有人可以向我说明发生了什么以及如何读取该类型 [A]=> A => Int,那将非常有帮助。

最佳答案

在 Scala 2.13.1 之前,我相信符号上的差异是按照 SLS 3.3.1 Method Types 设计的

A method type is denoted internally as (Ps)𝑈 ... A special case aretypes of methods without any parameters. They are written here => T.

因为方法returnfuncdefGen没有任何参数,所以它的类型用=> T表示法

scala> def  returnfuncdefGen[A] = (i: A) => i.toString.length
def returnfuncdefGen[A] => A => Int

其中 T = A => Int

请参阅 Dmytro 对 Scala 2.13.2 更改的回答 11416 MethodType.toString prints in scala format #7798

关于将参数化方法强制转换为函数时,Scala 有奇怪的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62756187/

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