我知道堆栈溢出上有类似的问题。
但是,如果在某些地方有任何简单的解释,那将会很棒。
val arr1 = Array.tabulate(5)( (_+65) )
编译好。
val arr2 = Array.tabulate(5)( (_+65).toChar )
是编译时错误。
另外,我想知道如何使用 @som-snytt 所描述的 -Ytyper-debug Scala: missing parameter type
答案 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