缺少参数类型,用于原始到字母转换的扩展函数

时间:2015-08-15 13:51:04

标签: scala types parameters

我知道堆栈溢出上有类似的问题。

但是,如果在某些地方有任何简单的解释,那将会很棒。

val arr1 = Array.tabulate(5)( (_+65) )

编译好。

val arr2 = Array.tabulate(5)( (_+65).toChar )

是编译时错误。

另外,我想知道如何使用 @som-snytt 所描述的 -Ytyper-debug Scala: missing parameter type

1 个答案:

答案 0 :(得分:1)

编译器编译时

Array.tabulate(5)( (_+65) )

它将等于:

Array.tabulate(5)(x => (x + 65 ) )

但是:

Array.tabulate(5)( (_+65).toChar )

它将扩展为匿名函数:

Array.tabulate(5)( (x => x + 65).toChar )

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

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

类型调试输出:

((x$1) => x$1.$plus(65)).toChar