Scala编译器会失败并显示"no ':_*' annotation allowed here"的原因是在使用可变参数(varargs)时,Scala编译器要求在参数列表中使用特定的语法来表示可变参数的展开。而在某些情况下,如果没有正确使用这个语法,编译器会报错。
具体来说,当我们使用可变参数时,需要在参数名后面加上冒号和星号(':_*')来表示参数的展开。这样编译器才能正确地将可变参数展开为一个参数序列。
而对于Row对象来说,它是Spark中的一个数据结构,用于表示一行数据。在Row对象中,可变参数的展开是由Spark框架自动处理的,因此我们不需要手动使用':_*'语法来表示可变参数的展开。
总结起来,Scala编译器会失败并显示"no ':*' annotation allowed here"是因为在使用可变参数时没有正确使用':*'语法来表示参数的展开。而Row对象之所以可以接受可变参数,是因为Spark框架会自动处理可变参数的展开。
领取专属 10元无门槛券
手把手带您无忧上云