Scala 什么是A=>=&燃气轮机;B什么意思?

Scala 什么是A=>=&燃气轮机;B什么意思?,scala,pass-by-name,Scala,Pass By Name,在中,我得到了一个类型为a=>=>B的值。这是什么意思 我一直被引导去理解,=>A实际上不是一种类型,而是一种声明参数以使用按名称调用语义的方式。但是如果它不是一种类型,那么a=>=>B意味着什么呢?请看一下这个问题答案中的#5:。简而言之,=>A是一种类型,但scala编译器无法识别它。解释器通常在该类型的响应中使用此符号,因此可以将其视为类型签名的一部分。A==> = B/COD>是语法错误。也许你的意思是=>A=>B?@sschaef否。编译器告诉我找到了:R=>U,必需的:R=>=>U编

在中,我得到了一个类型为
a=>=>B
的值。这是什么意思


我一直被引导去理解,
=>A
实际上不是一种类型,而是一种声明参数以使用按名称调用语义的方式。但是如果它不是一种类型,那么
a=>=>B
意味着什么呢?

请看一下这个问题答案中的#5:。简而言之,
=>A
是一种类型,但scala编译器无法识别它。解释器通常在该类型的响应中使用此符号,因此可以将其视为类型签名<代码>的一部分。A==> = B/COD>是语法错误。也许你的意思是
=>A=>B
?@sschaef否。编译器告诉我
找到了:R=>U,必需的:R=>=>U
编译器中似乎有个bug
A=>=>B
实际上应该在错误消息中显示为
A=>(=>B)
,因为在返回类型中需要一个callby name参数。但是,它们被称为call by name参数并不是偶然的,它们作为返回类型无效,因此编译器应该将其简化为
a=>B
,这显然是失败的。@sschaef我认为值得将您的注释升级为答案。