在Scala(2.7.7final)中,Predef.println
方法被定义为具有以下签名:
def println (x : Any) : Unit
为什么以后有效:
scala> println(1,2)
(1,2)
编译器是否自动将逗号分隔的参数列表转换为元组?通过什么魔术?这里是否存在隐式转换,如果是,那么哪一个?
答案 0 :(得分:11)
是的,如果没有合适的多参数方法和单个适当的单参数方法,编译器将尝试将逗号分隔的参数转换为元组。它不是一个隐式转换,只是一个编译器黑客。这是一个有点争议的特征,并且可能会继续进行改变,因为计划围绕统一元组和参数列表的处理工作。