首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基元到字符转换扩展函数的缺失参数类型

基元到字符转换扩展函数的缺失参数类型
EN

Stack Overflow用户
提问于 2015-08-15 13:51:04
回答 1查看 96关注 0票数 0

我知道堆叠溢出也有类似的问题。

但是,如果下面的任何简单解释都能在哪里找到,那就太好了。

代码语言:javascript
运行
复制
val arr1 = Array.tabulate(5)( (_+65) )

编译得很好。

代码语言:javascript
运行
复制
val arr2 = Array.tabulate(5)( (_+65).toChar )

是编译时错误。

另外,我想知道如何使用-Ytyper调试,如@som-snytt in Scala: missing parameter type中所描述的那样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-15 14:38:03

编译器编译时:

代码语言:javascript
运行
复制
Array.tabulate(5)( (_+65) )

它将等于:

代码语言:javascript
运行
复制
Array.tabulate(5)(x => (x + 65 ) )

但以下方面:

代码语言:javascript
运行
复制
Array.tabulate(5)( (_+65).toChar )

它将扩展到一个匿名函数:

代码语言:javascript
运行
复制
Array.tabulate(5)( (x => x + 65).toChar )

编译器将在函数体中丢失x的上下文。

您可以使用scala -Ytyper-debug查看详细信息:

类型调试输出:

代码语言:javascript
运行
复制
((x$1) => x$1.$plus(65)).toChar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32025404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档